how to build
a working
digita
computer
Edward Alcosser
James P. Phillips
Allen M. Wolk
HAYDEN BOOK COMPANY, INC., NEW YORK
Second Printing, 1968
Copyright © 1967, 1968
Hayden Book Company, Inc. All rights reserved. This book or any
parts thereof may not be reproduced in any form or in any language
without permission of the publisher. Library of Congress Catalog
Card Number 6614495.
Printed in the United States of America
Preface
The new and exciting field of digital computers has expanded so much
in recent years that almost everyone is now affected by it. The need to
understand computers experienced by people of widely diversified vocational
and academic backgrounds has presented one of the most challenging jobs
of teaching ever to be tackled by authors, lecturers, and teachers alike.
As with any new and complicated subject, the first texts to be introduced
are usually effective at the college and postgraduate levels. This book, How
to Build a Working Digital Computer, is the result of an endeavor to present
to the nonengineer the basic facts concerning digital computers, their uses,
and how they work. It is specifically aimed at a reader with an interest or
need to understand this subject but with no formal training or education in
computer technology. How' to Build a Working Digital Computer is equally
aimed at hobbyists, technicians, secondary school students, and college
students with no computer background.
In presenting the topic of basic computer technology, a unique method
of "learning by doing" is employed. Since there is no effective substitute
to proving out theory in the laboratory, this book shows the reader how to
construct a working model of a digital computer, using simple inexpensive
components usually found around the house or in a neighborhood electrical
parts store. This computer is divided into basic units corresponding to the
actual working sections of a computer. The design and operating principles
of each computer section are explained in detail using examples and simple
experiments and the corresponding model computer unit is then constructed
and used to illustrate the theory discussed in the text.
In this manner, a complete working digital computer, able to add, subtract,
multiply and perform many other complicated functions at the reader's discre
tion, is constructed. The text then discusses the topic of programming and
several basic computer programs are developed for use with the model
computer. The reader may write his own programs, load them on his own
working computer, and run the programs, providing experience and proving
the principles expounded in the text.
With this text, hobbyists, students, technicians, and just ordinary people
will find a simplified, enjoyable, and effective approach towards learning and
really understanding the basic principles of modern digital computers.
We would like to acknowledge the work done by Scalor Publications in
helping to produce the art and tables used in the text.
June, 1967 The Authors
Table of Contents
Chapter 1. Introduction 1
The Digital Computer, 1 A Brief History of Numbers and
Calculators, 2 Computers in the 20th Century, 5 Organiza
tion of the Computer, 6 A Sample Computer Program, 8
Chapter 2. Communicating with the Computer 13
Number Systems, 13 The Binary Number System, 15 Encod
ing, 16 Decimal to Binary Conversion, 17 The Encoder, 18
Binary to Decimal Conversion, 21 The Decoder, 22
Construction Details — Encoder, 23 Decoder, 31
Chapter 3. Computers and Logic 41
Symbols, 42 Truth Tables, 43 Logic Circuits, 45 Truth
Evaluator, 47 Experiments with Truth Tables, 48 Boolean
Algebra, 51 Minimizing Terms, 53 De Morgan's Theorem,
55 The UN Problem — An Experiment in Logic, 57
Construction Details — Truth Evaluator, 59 Battery Holder,
62 UN Problem, 63
Chapter 4. Computer Arithmetic 65
Binary Arithmetic, 65 Basic Rules, 65 Adding Binary Num
bers, 67 Subtraction, 71 Complementary Numbers, 74
Multiplication and Division, 75 Arithmetic Unit, 75
Construction Details— Arithmetic Unit, 81
Chapter 5. Storage Devices 87
Basic Concepts, 88 Computer Words, 88 The Core Mem
ory, 89 The Drum Memory, 91
Construction Details — Core Memory, 93 Drum Memory,
97
VII
viii How to Build a Working Digital Computer
Chapter 6. Computer Control 105
The Computer Units— A Review, 105 The Control Unit, 106
The Complete Instruction Repertoire, 108 Wiring the System,
109 CheckOut Procedures, 111 Operating Procedures, 113
Construction Details — Control Panel, 114 Junction Box,
122 Common TiePoint Terminal Strips, 124
Chapter 7. Programming Our Computer 126
The Programming Process, 126 Using Octal Codes, 129
Devising a Simple Program, 132 Programming Multiplication,
133 Programming Division, 145 Readout, 155 Formulat
ing the Program for Transfer to Drum, 165
Appendices, 167
Index, 173
Chapter 1
INTRODUCTION
THE DIGITAL COMPUTER
The progress of man is directly related to the tools and imple
ments he uses in his work. The extremely large and rapid strides being
made today in the development of our technology may be attributed
in part to the coming of age of the electronic, programmable, digital
computer. This is a "tool" that can be taught or programmed to solve a
variety of complex problems rapidly and with great accuracy. In this
text, we will detail the construction of a working model of a digital
computer and demonstrate the operation of this important machine
through discussion and experiment.
Modern computers can perform billions of basic arithmetic opera
tions such as addition or subtraction each second without error or
fatigue. They are able to manipulate extensive amounts of data at speeds
that operators of calculating machines cannot match. Accuracies achieved
are typically rated in terms of one part in a million. Such awesome capa
bilities have led to use of computers in countless areas. As of April,
1965, there were approximately 18,000 computer installations in this
country serving the government, science, schools, and industry.
The Internal Revenue Service has estimated that tax revenues
were increased by 52.5 million dollars in 1964 because computers
were used to process Federal income tax returns. Using computers to
make blood tests in laboratories enables technicians to perform tests
in two minutes that would ordinarily take two to three hours. A pub
lishing firm that now uses a computer to process book orders estimates
that it has reduced its orderprocessing time by 75 percent. The spec
tacular achievements of our various space programs can be directly
related to the computer control of different phases of each operation.
The highly satisfactory performances of the Ranger, Gemini, and
Mariner missions would not have been possible without computers.
The influence the digital computer is exerting on our society is
demonstrated every day on the front pages of our newspapers and in
countless articles and columns relating new computer applications. The
potential future applications of the digital computer will make this pres
ent widespread use seem small. Before proceeding with our study of the
computer, it is well to understand the history of the computer's develop
ment and the relationships between this development and the culture
and technology of these times.
2 How to Build a Working Digital Computer
A BRIEF HISTORY OF NUMBERS AND CALCULATORS
In earliest times, man most likely counted on his fingers. If he
warned to indicate that he had killed two tigers, he would hold up two
fingers. His earliest counting methods were probably limited to totals
below five. In time, sticks and pebbles were used to extend the range of
counts, but the simplicity of the existing social organization kept such
usage at a very low level of sophistication. Number symbols and methods
of computation were unknown and not needed.
As the farmer and tradesman superseded the hunter, man's require
ments for counting and recording his counts for future use became more
complex. Simple tallying methods were replaced by systems in which
different symbols were used to represent different counts and these sym
bols were added and subtracted. The early Egyptians (circa 3400 B.C.)
devised such a number system using symbols called hieroglyphics. The
hieroglyphic symbols representing the numbers 1 through 10 are shown
in Fig. 11. It is interesting to note the relationship between these writ
ten symbols and counting tallied on the fingers on a hand.
The Romans developed a system of numbers, also illustrated in
Fig. 11, which should be familiar to you because of its use on clock
faces, as chapter numbers, and so on. Calculating with this number
system was slow and awkward since large numbers required many
symbols. For example, the number 9876 in Roman numerals is
MMMMMMMMMDCCCLXXVI (M = 1000, D = 500, C = 100,
L = 50, X = 10, V = 5, 1= 1).
The symbols of the numbering system that we use today, the deci
mal, are probably of HinduArabic origin and are therefore referred to
as Arabic numerals. Figure 11 shows early Hindu and Arabic number
symbols for the period about the year 900 a.d. The most important
mathematical development attributed to the Hindus is the origin of the
concept of the zero, 0.
MODERN
EARLY
EGYPTIAN
EARLY
ROMAN
EARLY
HINDU
EARLY
ARABIC
/
/
:r
2
/
J
//
2T
1
V
3
in
MI
4
V
f
nil
zz
y
<f
S
in
ii
X
V
d
6,
ii /
/ii
jzr
s
7
7
mi
III
IK
7
V
i
II II
II II
TOU
<
A
9
III
III
III
TX.
<
1
/o
r\
3Z
Fig. 11. Early number symbols.
Introduction
Fig. 12. An Egyptian sand calculator.
The development of various number symbols and counting systems
was matched by the introduction of counting and calculating aids other
than sticks or pebbles. For example, to perform calculations the
Egyptians developed a sand calculator consisting of columns of grooves
in the sand, as illustrated in Fig. 12. The righthand groove repre
sented quantities from to 9, depending upon the number of pebbles
contained in the groove. For example, if four pebbles were contained
in the groove, the number represented was 4. The next groove to the
left represented 10 times the number of pebbles in the groove. Thus,
if there were three pebbles in this groove and one in the righthand
groove, the number 3 1 was represented. Each succeeding groove to the
left represented numbers 10 times that of the preceding groove. Hence,
the grooves represented the l's, 10's, 100's, and 1000's columns, re
spectively, and so on. This system of counting, the decimal system, is the
basic system we employ today.
The Egyptians were not alone in the development of simple calcula
tors. Around 600 B.C., the Chinese developed a calculator called an abacus
(Fig. 13). This device consists of a wooden frame strung with beads
on wire columns. Each column represents an order or place in the
decimal numbering system in the same way the grooves represented
decimal places in the sand calculator. The abacus is still used today and
skilled operators manipulate it at speeds comparable to those of a
mechanical or electric desk calculator.
Fig. 13. An abacus.
4 How to Build a Working Digital Computer
As civilization developed, calculating devices became more sophis
ticated and, correspondingly, demanded a higher degree of intelligence
and knowledge from their users. The design theory and potential
range of applications of some computing machines developed before
the 19th century were similar to that of presentday computers, but
the efficiency and speed of the machines was very low.
The first truly mechanical calculator, invented by Blaise Pascal,
a French philosopher and mathematician, around 1642, was an adding
machine that operated in the decimal numbering system (Fig. 14).
Fig. 14. Pascal's calculator.
It consisted, essentially, of a series of wheels which added and carried
10's. Shortly after Pascal's invention, another philosopher and mathe
matician, Gottfried von Leibnitz, developed a gearoperated calculator,
the stepped reckoner, which allowed for the carry operation between
orders or places (Fig. 15). In Pascal's machine, multiplication was
performed by repeated addition; in Leibnitz's machine, multiplication
could be performed directly. Both machines were operated manually.
Fig. 15. Von Leibnitz's stepped reckoner.
In the early 1800's, an English mathematician, Charles Babbage,
worked on an "engine," or calculator, that would solve complex mathe
matical problems automatically. However, the technology of his time was
not capable of producing the accurate parts required to make the calcu
lator work.
Introduction 5
Around 1890 an American scientist working for the Census Bureau,
Herman Hollerith, devised a card containing punched holes that could be
read or interpreted by an electrical device (Fig. 16). Each hole punched
into the card represented a different piece of information. After the
cards were punched, the data contained on them were read by an
Fig. 16. A punched card.
electrical scanner which then was able to sort, count, and tabulate the
information. This punch card method is used extensively today in data
processing applications and was applied successfully to the tabulation
of data gathered during the Census of the United States in 1890.
COMPUTERS IN THE 20th CENTURY
After 1890, the development of various types of calculators and
dataprocessing machines proceeded rapidly. However, the machines
remained relatively crude as late as the 1920's. They were not capable
of performing the long sequences of operations required to solve complex
problems and were operated by fairly constant human control.
The first successful computer capable of performing these opera
tions was developed during the period between 1939 and 1944 by the
International Business Machines Corporation in cooperation with
Harvard University. It was known as the Automatic SequenceControlled
Computer or the Harvard Mark I. It is believed that the development
of this machine was based upon the work done earlier by Charles
Babbage and was permitted by the advance of technology by the 1940's
which allowed the accuracy in fabrication not available in Babbage's
time.
This first, largescale computer was essentially mechanical in nature
using gears, cams, and shaft rotations as the calculating devices, and,
therefore, it was relatively slow and bulky. Since then, the use of elec
tronic components has allowed the building of computers that are
much faster and less bulky. The first electronic computer was completed
in 1946 by the Moore School of Electrical Engineering in Philadelphia
and was called ENIAC (Electronic Numerical Integrator and Calcu
lator). The successful design and fabrication of ENIAC represented a
major accomplishment, as the technology of that time was such that it
was thought vacuum tubes in a largescale computer would fail more
quickly than they could be found and replaced. Engineers were then
having difficulty keeping radar sets containing 100 tubes operating
6 How to Build a Working Digital Computer
properly. However, in spite of this, ENIAC did operate successfully with
approximately 18,000 tubes.
The next major step in the evolution of the digital computer was
the advent of the storedprogram machine. The word program refers
to the series of operations that the computer is instructed to perform.
A storedprogram machine is built with a facility for storage that allows
the insertion of a program at the option of the operator. In this way the
solutions to many different problems may be "programmed" and saved
for use at appropriate times. Thus, if a problem must be solved for which
a program already exists, the operator need only insert the existing
program into the computer to obtain the required solution. The idea
of the storedprogram machine was introduced in 1945 by Dr. John von
Neumann. The first storedprogram machine was built by a group headed
by M. V. Wilkes at Cambridge University in England.
Today's computers are capable of extremely high speeds and
accuracy and are used in applications ranging from payroll processing
to the guidance of spacecraft. As our technology advances, great strides
are being made to increase still further the capability of our computers in
terms of information storage capacity, accuracy, and speed. This increase
in speed and accuracy allows the computers to solve larger and more
complex problems at economical cost and within the most stringent time
requirements. Almost every day, major developments are applied toward
the creation of computers that can solve greater and more challenging
problems. Problems that would require lifetimes to be solved manually
are now being solved quickly and efficiently by modern computers.
The excitement of our times is certainly aided by the extension given
to our minds by computers,
ORGANIZATION OF THE COMPUTER
A digital computer is composed of five basic functional units, as
illustrated in Fig. 17, the input, storage, arithmetic, control, and output
ORDERS
CONTROL
UNIT
PROGRAMMED INSTRUCTION
CALCULATED DATA
(FOR TEMPORARY
STORAGE)
ORDERS
STORAGE
UNIT
STORED DATA
CALCU
LATED
ARITHMETIC ■ DATA
Fig. 17. A typical computer's functional diagram. The arrows indi
cate the direction in which information travels through the com
puter.
Introduction
Fig. 18. Input methods: (A) paper tape; (B) punched cards; (C)
magnetic tape.
units. They will be described briefly here and considered in detail in the
chapter in which the corresponding unit is constructed for our own com
puter model. The function of the computer is to accept alphabetical
numerical (alphanumeric) data, perform calculations and other process
ing of these data, and produce specific alphanumeric outputs.
The alphanumeric input data are usually prepared in the form of
coded, punched paper tape or cards (Fig. 18), or magnetic tape. This
information is then converted to electrical signals coded in the binary
format (or computer language) used by the computer. The computer
unit that receives the alphanumeric data and converts them into the
binary format, a process called encoding, is called the input unit. (This
unit is described completely in Chapter 2.) The input unit stores the
data until the computer is ready to perform as instructed.
Once the input data have entered the input unit, their paths through
the computer and the operations performed upon them are completely
determined by the stored program, which indicates the sequence of
operations required to perform the desired computations. The program
is stored in coded form in the computer's storage unit. Each operation
is read from this storage unit, in sequence, and used by a control unit to
issue instructions (orders) to the remaining units in the computer. These
instructions cause the computer to perform the programmed operation
read from the storage unit. Hence, a stored operation such as "ADD
x _( y" will cause the control unit to generate instructions to the arith
metic unit causing that unit to add the quantity x to the quantity y.
8 How to Build a Working Digital Computer
The storage unit usually consists of three storage areas: program
storage; permanent data storage; and scratchpad storage. The first
area, program storage, is used to store the program for the particular
computer application. Programmed operations are stored in a particular
fixed sequence so that they may be read from storage automatically
in the proper order. The second area, permanent data storage, is used
to store various constants and other data required by the program for
solution of the problem. The third area, scratchpad storage, is a tem
porary storage area used by the program to store intermediate results
developed during the course of the problem solution.
The various types of memory devices are described in Chapter 5
and a simulated magnetic drum and a core memory unit are designed
and constructed. The control unit for our computer is described and
constructed in Chapter 6.
The arithmetic unit performs all of the basic arithmetic operations,
such as addition, subtraction, multiplication, and division, under program
control. Complex mathematical techniques and methods such as the use
Ox ca^cuxus are irnplementcu uy reducing these techniques to sequences
of basic arithmetic operation. (The arithmetic theory of digital com
puters is discussed in Chapter 4, when the arithmetic unit for our
computer is constructed.) The output of the arithmetic unit is either
stored in scratchpad storage or read out through the output unit.
The output unit is just the opposite of the input unit in that it
performs the function of converting the alphanumeric data from the
computer's internal format to that required by the outside environment.
Output data are fed to peripheral units such as magnetic tape recorders,
printers, typewriters, or card punches, depending on the use these
data are put to. (Our computer's output unit is discussed and con
structed in Chapter 2.)
A SAMPLE COMPUTER PROGRAM
Any computer is built specifically to perform a particular set of
operations. The list of these operations is called the computer's instruc
tion repertoire, as it lists the computer's capabilities in terms of the
operations it can perform. The instructions contained in the computer's
repertoire can be arranged (programmed) in many different sequences
to perform all sorts of complex calculations. To illustrate this process,
we shall assume that we have a computer that is capable of performing
the following instructions:
1. Add the contents stored at location A to those stored at loca
tion B.
2. Subtract the contents stored at location B from those stored
at location A.
Introduction 9
3. Read in data to the input unit.
4. Read out data to the output unit.
5. Store data in location A or in location B, whichever is indicated.
Let us arrange these instructions to develop a program that calcu
lates the solution to the following problem:
T=x+yz
where x, y, and z are any three numbers. For example, if x — 5, y = 3,
and z = 4, the solution to the problem is:
T=5+34
= 4
For illustrative purposes we will use these three numbers in our sample
program.
First, we must read in and store our numerical inputs, 5 and 3:
1. Read in 5 to the input unit. (Instruction 3)
2. Store 5 in storage location A . (Instruction 5 )
3. Read in 3 to the input unit. (Instruction 3)
4. Store 3 in location B. (Instruction 5)
Next, we must add 5 and 3 and store the result:
5. Add the contents of A, 5, to the contents of B, 3, for a total of
8. (Instruction 1)
6. Store 8 in location A. (Instruction 5) This process writes over
the number previously stored in A so that only the new num
ber remains.
Finally, we must subtract 4 from 8 and read the numerical answer out:
7. Read in 4 to the input unit. (Instruction 3)
8. Store 4 in location B. (Instruction 5)
9. Subtract the contents of location B, 4, from the contents of
location A, 8, for a remainder of 4 (T — 4). (Instruction 2)
10. Read out 4 to the output unit. (Instruction 4)
With this 10step program inserted in program storage, using x, y, and z
instead of set numbers, the computer will automatically calculate T
for any values of x, y, and z, within its capabilities.
A diagrammatic representation of the manner in which the data
used in this program move through the computer is shown in Figs. 19
through 114. When the computer is started, the first instruction in the
program is read from program storage. This causes the control unit
to order the input unit to read 5 (or x) into its own temporary storage
facility (Fig. 19). If the input data are in decimal form, the input
unit encodes these data into the binary form used by the computer.
(Encoding is covered in detail in Chapter 2.)
The program's second instruction causes the data, 5 (or x), to
10
How to Build a Working Digital Computer
[ INPUT UNIT
Fig. 19. Read in x.
be transferred from the input unit to scratchpad storage location A
(Fig. 110). Sometimes this transfer may be accomplished via the arith
metic unit for convenience.
Instructions 3 and 4 of the program cause the computer to perform
in the same manner as with 1 and 2, reading in and storing 3, or y,
in location B of scratchpad storage.
The program's fifth instruction causes both the contents of A and B
to be transferred to the arithmetic unit where they are added and their
sum stored in the accumulator, a shortterm storage element contained
in the arithmetic unit (Fig. 111). The sixth instruction causes the
sum to be transferred to scratchpad storage location A (Fig. 112).
Instructions 7 and 8 of the program read in and store data, 4 (or z),
in location B in the same manner as instructions 1 and 2 or 3 and 4.
STORE 5 (X) IN (A)
STORE IN (A)
5(x)
Fig. 110. Store x in A.
Introduction
11
NOTE
A/S IS ABBREVIATION FOB ADDER/SUBTRACTOR
ARITHMETIC UNIT
Fig. 111. Add A to B.
ACC IS ABBREVIATION FOR
ACCUMULATOR
Fig. 112. Store in A.
Instruction 9 causes the contents of B to be subtracted from those of
A with the difference 4, T, being temporarily stored in the accumulator
(Fig. 113). Finally, the tenth and final instruction in the program
causes the computer to read out the solution through the output unit
(Fig. 114). In this case we are assuming that output data are decoded
to decimal form.
12
How to Build a Working Digital Computer
T STORAGE UNIT
Fig. 113. Subtract B from A.
READOUT
j STflfiACF UNIT 1
CONTROL
UNIT
1
1
1
 1
PROGRAM I 1
DECODE
1

STORAGE 1 '
 1
1
L
^■■■■■H
1
TR
TO
1
1
WSFER I L_
WTPtIT
UNIT _
n
i
1 8
(x+y)
r
'
_SI0Rt_
'
; 1
1
ACCUMULATOR
44
IZMTL
OUTPUT 1 ,
STORE M]
BINARY TO K 1
DECIMAL ■ 1
1
1 1
1 1
1
_J
1
DECODER  J
^B
^BM
1
1
L_
HTKBINAK
Y)
i
i
DECIMAL
OUTPUT
ANSWER
Fig. 114. Read out.
Chapter 2
COMMUNICATING
WITH THE COMPUTER
The only "language" that the computer uses is numerical. All
of the information fed into it must he converted to number form.
However, as indicated in Chapter 1, the digital computer does not
operate in the decimal number system. Any numerical data given to it
must be translated from our decimal language into the binary language
of the computer. All information taken from the computer must be
translated from the machine's language into our own. In a like manner,
alphabetic data must be converted to a binary numerical code for use
in the computer. In this chapter, only numerical data will be considered.
Our computer has two translating devices, the encoder and the
decoder. The encoder enables us to translate our problem data from
decimal numbers to binary numbers. The decoder enables us to under
stand the answers the computer obtains by translating its binary response
into decimal numbers. To understand how these units function, it is
necessary to examine the relationship between the decimal and binary
number systems.
NUMBER SYSTEMS
In the decimal number system, there are ten different numeral
symbols: 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. When standing alone, each
of these symbols represents a fixed number. In combination, however,
these symbols can represent any number in the system. They do so by
assuming different values when placed in different positions in a number.
For example, in the number 4444, the numeral symbol is the same but
it has four different values: 4000, 400, 40, and 4. In the decimal num
ber 255,252, two numeral symbols are used, but each has more than
one value (200,000, 200, and 2; 50,000, 5,000, and 50).
Such a system, where the value of the numerical symbol is deter
mined by its position, uses positional notation. The significance of
positional notation in the decimal number system is shown in Fig. 21.
The first column to the left of the decimal point is the 10° or unit's
column. Any numeral that appears in this position is weighted by the
factor 1. The numeral 6 in this column is the equivalent of 6 X 1>
or 6 X 10°. In the second column to the left of the decimal point, the
10 1 column, a numeral is weighted by a factor of 10. Here, 6 would
13
14 How to Build a Working Digital Computer
HUNDREDS
COLUMN
TENS
COLUMN
UNITS
COLUMN
DECIMAL
POINT
1
TENTHS
COLUMN
HUIORETHS
COLUMN
(K) 2 )
ilO 1 )
(10°)
(10"')
€ I0 2 >
6 . ■ 6«I0 ■ 60
6 . • 60«IO ■ 600
Fig. 21. Positional notation in the decimal number system.
attain a value of 6 X 10, or 6 X 10 1 . In the third column, the 10 2
column, 6 would attain a value of 6 X 100, or 6 X 10 2 .
Each of the numeral symbols in the decimal system will change
its value in the same manner as its position changes in a number. Each
shift to the left increases a numeral's value by a factor of 10. Each
shift to the right decreases a numeral's value by the same factor. To
illustrate this further, we will break down several decimal numbers:
357.1 = 300 + 50 + 7 + 0.1
= 3Xl00 + 5xl0 + 7Xl + lX 1/10
= 3 X 10 2 + 5 x 10 1 + 7 X 10° + 1 X 10 1
13402.01 = 10,000 + 3000 + 400 + 2 + .01
= 1 X 10,000 + 3 X 1000 + 4 x 100 + 2 X 1
+ 1 x i/ioo
— i x io* + 3 X 10 3 + 4 x 10 2 + X 10 1
+ 2 X 10° + X 10 1 + 1 X lO" 2
Many practical number systems use positional notation. They
differ from the decimal system only in the number of numeral symbols
they use and the weighting factor related to each position. The octal
system, for example, uses 8 symbols: 0, 1, 2, 3, 4, 5, 6, and 7. Numeral
values in this system change by a factor of 8 as the numeral's position
changes. For example, the octal number 136 is the equivalent of the
decimal number 94:
136 = 1 X 8 2 + 3 X 8 1 + 6 X 8°
= 1 X 64 + 3X8 + 6X1 = 94
Because these systems and others use the same numeral symbols, it
is difficult at times to tell what system a number is written in. If some
one were to tell you that 136 really represented 94 you wouldn't believe
them unless there was some indication that 136 was an octal number
and 94 was a decimal number. For this reason, when numbers in dif
ferent systems are compared in this text they will be identified by a
key number. This key number indicates the number of numeral symbols
Communicating with the Computer 15
used in the system and is referred to as the system's base or radix. The
base for the decimal system is 10; the base for the octal system is 8.
Using this coding, for example, (100) 10 and (100) 8 represent, respec
tively:
1 X 10 2 + X 10 1 + X 10°
and:
1 X 8 2 + X 8 1 + X 8°
Also,(100) 8 = (64) 10 .
Any number in any positional notation system may be represented
by the following formula:
N = S„B» + . . . + S 3 B 3 + S 2 B 2 + SxB 1 + S B° + SiB 1
+ S_ 2 B~ 2 + . . . + S_ m B»
where N is the number, S„ through S_„ are the numeral symbols used in
the system, and B is the base of the system. The base, raised to a power,
represents the factor by which the numeral symbol is multiplied in each
position. In these number systems, the least significant numeral is the
rightmost digit and the most significant numeral is the leftmost digit.
THE BINARY NUMBER SYSTEM
Like the octal and decimal systems, the binary system uses posi
tional notation. Two symbols, only, are used, and 1, so the value of
a numeral increases or decreases by a factor of 2 as it shifts to the left
or right. The base of the binary system is 2. The significance of posi
tional notation in the binary system is shown in Fig. 22. To illustrate
this further, we will break down several binary numbers.
(1101)2 = 1 X 2 3 + 1 X 2 2 + X 2 1 + 1 X 2°
=1X8+1 X4+0X2+1X 1
= (13)io
(10011) 2 = 1 X 2 4 + X 2 3 + X 2 2 + 1 X 2 1 + 1 X 2°
=1X16+0x8+0x4+1x2+1x1
= (19) 10
(2"') (2"
" 7
Fig. 22. Positional
notation in the binary
number system.
100,
16
How to Build a Working Digital Computer
TABLE 21
BINARY
DECIMAL
BINARY
DECIMAL
1
1
10001
17
10
2
10010
18
11
3
10011
19
100
4
10100
20
101
5
110
6
11110
30
111
7
110010
50
1000
8
1000110
70
1001
9
1011010
90
1010
10
1100100
100
1011
11
1100
12
1111101
125
1101
13
10010110
150
1110
14
1111
15
111110100
500
10000
16
1111101000
1000
Each numeral in a binary number is referred to as a bit (binary
digiO The binary number 100, which is (4)i , is a threebit number,
and 10100, or (20)i , is a fivebit number. Computers are rated by the
number of bits that can be stored in their memory sections. The capacity
for bit storage is directly related to the computer's precision and ability
to handle complex calculations. Larger capacities enable the computer
to work with greater precision and more complex calculations.
As indicated in Table 21, which lists some binary numbers and
their decimal equivalents, binary numbers use more digits than decimal
numbers to express the same quantities. However, the advantages
this may give to decimal numbers are offset, in a computer, by the ease
with which arithmetic is performed in the binary system. This will be
covered in more detail in Chapter 4.
Because the decimal and binary number systems both use positional
notation, conversion from one system to the other is relatively simple.
It is done by translating the numeral values of one system into those
of the other.
ENCODING
The process of conversion from a generally known system to a
generally unknown system is called encoding. The unit in our computer
Communicating with the Computer 17
that performs this function accepts data in one form and transmits them
in another. Its output is the properlycoded equivalent of its input.
The simple alphabet codes you may have used in childhood involved
an encoding process. Converting such meaningful phrases as:
The ball was thrown from first to third.
into:
Ftg nmzz ime f tdaiz rday rudef fa ftudp.
used a conversion system in which a generally known arrangement
of letters was converted into a generally unknown arrangement of
letters. A relationship was established between both letter systems so
that any sentence could be converted and still be understandable when
decoded. (In this case, the known letters, a, b, c, . . . , n, o, p, . . . , z
are the equivalent of the coded letters m, n, o, . . . , z, a, b, . . . , 1,
respectively.)
Encoding in a computer follows the same kind of fixed relation
ship. Each known decimal number corresponds to a "coded" or binary
number.
DECIMAL TO BINARY CONVERSION
Decimal numbers can be converted to binary numbers by using the
general number equation for the binary number system:*
(N) 2 = S„2» + . . . + S 3 2 3 + S 2 2 2 + S^ 1 + S 2°
To do so, you would set N in the equation equal to the decimal number
and solve for all the terms. If you wish to work this out for any par
ticular decimal number, do so, but you will find that the process is
quite lengthy and timeconsuming.
There is a shorthand method for decimal to binary conversion
that simplifies the exercise considerably. In it, the decimal number
to be converted is repeatedly divided by 2. The remainder of each
division, which can only be 1 or 0, will indicate a digit of the binary
number. The remainder of the first division is placed in the 2° column;
the remainder of the second is in the 2 1 column; etc. For example, to
convert (128)i into its binary equivalent, the following steps are
followed:
Division
ainder
Position
20
21
22
23
* Fractional portions are not included for simplicity.
18 How to Build a Working Digital Computer
Division
Remainder
Position
2\8_
2*
2\4_
23
2\2_
26
2\ 1
1
r>
Therefore, (128) M = (10000000) 2 .
Let us try this with a different number. For instance, (61)i :
Division
Remainder
Position
2\61
2\30
2\15
2 \L
2\3_
2\1_
1
1
1
1
1
2«
21
2 2
23
2*
25
Therefore, (61)i =
:(111101) 2 .
THE ENCODER
The encoder for our computer will convert the decimal numbers
through 9 into their binary equivalents. The construction details for
this unit are given at the end of this chapter. At this point we will
consider its design aspects.
The encoder unit receives a decimal input and produces an equiv
alent binary output. Switches will be used to represent and manipulate
the decimal input. To monitor its output and demonstrate its function,
the encoder will have a display that indicates what binary numbers are
being used. Lamps will be used to indicate this binary output. Since a
lamp has two states — on and off — and a binary number has two symbols
— and 1, we will indicate a 1 symbol by lighting the lamp and a
symbol by extinguishing it.
We know that the largest decimal number we will encode is 9
and that its binary equivalent is a 4bit number, (1001). Four lamps
will therefore be sufficient for the binary output, one for each bit posi
tion. The lamps will be labeled according to their column heading:
2 3 , 2 2 , 2\ and 2°.
The switch connections used to encode decimal numbers are deter
mined by examination of a conversion chart, such as that shown in
Table 22. This reveals that there is some pattern to the manner in
which the four output lamps indicate 0's or l's. In the 2° column
(rightmost column), the 0's and l's alternate. For an even number
there is a 0, for an odd there is a 1. In the next column, the 2 1 column,
the 0's and l's run down the column by twos. In the 2 2 column the 0's
and l's run down the column by fours. In the 2 3 column, the first eight
rows have 0's and it is only because we have limited our chart to ten
Communicating with the Computer
TABLE 22
19
DECIMAL NUMBER
2_ 3
2 2
2 1
2°
(0 x 2 3 )
+
(0 x 2 2 )
+
(0 x 2 1 )
+
(0 x 2°)
1
(0 x2 3 )
+
(0 x 2 2 )
+
(0 X2 1 )
+
(1x2°)
2
(0 x 2 3 )
+
(0 x 2 2 )
+
(1 X2 1 )
+
(0 x 2°)
3
(0 x2 3 )
+
(0 x 2 2 )
+
(1 X2 1 )
+
(1 x 2°)
4
(0 x 2 3 )
+
(1 x 2 2 )
+
(0 x 2 1 )
+
(0 x 2°)
5
(0 x 2 3 )
+
(1 x 2 2 )
+
(0 x 2 1 )
+
(1 x 2°)
6
(0 x 2 3 )
+
(1 x 2 2 )
+
(1 x 2 1 )
+
(0 x 2°)
7
(0 x 2 3 )
+
(1 x 2 2 )
+
(1X2 1 )
+
(1 x 2°)
8
(1 x 2 3 )
+
(0 x 2 2 )
+
(0 x 2 1 )
+
(0 x 2°)
9
(1 x 2 3 )
+
(0 x 2 2
+
(0 x 2 1 )
+
(1 x 2°)
rows that the pattern is not apparent for this column. If we had extended
the chart to sixteen rows, we would have eight rows of l's.
A tenposition rotary switch is used in the encoder. This switch
is similar to the channel selector on a TV set where each channel
is a particular position on the switch. A rotary switch has two parts:
the arm and the contacts. Usually, one end of the arm is connected
to a single point on a common terminal and rotates about this point.
As it rotates, it contacts connection points that are positioned in a circle
around the common terminal. A schematic of a tenposition rotary
switch is shown in Fig. 23. You can see that the arm serves to connect
the contact terminals to the common terminal, one at a time.
Fig. 23. A tenposi
tion rotary switch.
8o
7°
,
a o I
3 o o
ARM/*
COMMON
TERMINAL
o2
CONTACT
TERMINAL
°3
From the conversion chart we know that the 2° lamp will light
for every odd decimal number. Therefore, electricity is routed from
the power source to the lamp when the switch is in a position to encode
an odd number. This wiring is shown in Fig. 24. At positions 1, 3, 5, 7,
and 9, the lamp will light because B is connected from one of the
contact terminals through the arms to the common terminal and the
20
B+
How to Build a Working Digital Computer
v2°
i
o I
$L
j. j
±2.
Fig. 24. A rotary switch
wired to light 2° with every
odd number.
lamp. To form a complete circuit, the other side of the lamp is con
nected directly to the power source return.
The 2 1 lamp will light only when the decimal numbers 2, 3, 6, or
7 are encoded. The rotary switch connections for this lamp are shown
in Fig. 25A.
The 2 2 lamp will light only when the decimal numbers 4, 5, 6, or
7 are encoded. The 2 s lamp lights only when the decimal numbers 8 or 9
are encoded. The rotary switch connections for these lamps are shown
in Fig. 25B and C, respectively.
»'J
Bt
u
(A) ROTARY SWITCH SCHEMATIC, ENCODE 2 1
oO I
o
B+
8 Ij o2
lo 03
6 ? ft »
(B) ROTARV SWITCH SCHEMATIC.ENCODE l z
B+
O u I
IT
To
6° o °4
5
§£
§L
Fig. 25. The rotary switch
wiring to lamp (A) 2 1 ; (B)
22; (C) 23.
SL
(0 ROTARY SWITCH SCHEMATIC.ENCODE 2 !
Communicating with the Computer 21
To encode the decimal numbers through 9, therefore, four ten
position rotary switches are needed. However, since this means that
we must run each switch to the same position to encode a number,
the construction is a bit cumbersome. Therefore, the switches are
ganged; i.e., they are combined so that the arm is common to all four
switches.
Our encoder will encode two decimal numbers simultaneously.
Therefore, it will use two ganged rotary switches and two output dis
plays. The wiring diagrams and a picture of the finished unit are
included in the construction details at the end of this chapter.
BINARY TO DECIMAL CONVERSION
In the computer, decoding is necessary because the response is in
binary form and must be converted to decimal form to be understood
by the user. The unit that performs this function in our computer is
the decoder, or output unit.
Arithmetically, converting binary numbers to decimal numbers is
not too difficult. The process is one of simple addition:
(11011)2=1 X2 4 + 1x2 3 + 0x2 2 +1x2 1 +1X2°
=1X16+1X8+0X4+1X2+1X1
— 16 + 8 + 2+1
= (27) 10
(10101)2 = 1 X 2 4 + x 2 3 + 1 X 2 2 + X 2 1 + 1 X 2°
=1X16+0X8+1X4+0X2+1X1
= 16 + 4+1
= (21) 10
If we limit our consideration to numbers under (10) 10 , a simple
decoder may be designed in a manner similar to that of the encoder.
However, since our computer will be capable of producing numerical
outputs exceeding (10) 10 , but less than (100)i , it will be necessary to
decode a maximum of a 7bit number into a 2digit decimal number.
One method of performing this conversion consists of converting the
7bit binary number into two 4bit binary numbers such that each 4bit
binary number represents a decimal digit. For example, the 7bit num
ber (010101 1) 2 or (43)i , may be converted to the following 4bit
numbers.
0100 and 0011 (or (4) 10 and (3) w )
This conversion is usually performed by a programmed sequence of
operations and is discussed in Chapter 7. The 4bit numbers each
represent a decimal digit and are called binarycoded decimal numbers.
These numbers may readily be converted to decimal numbers by a
decoder.
22
How to Build a Working Digital Computer
TABLE 23
BINARY SYMBOLS
2 3
2 2
2 1
2°
DECIMAL SYMBOLS
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
3
4
5
6
7
8
9
THE DECODER
The decoder for our computer will convert the binary numbers
0000 through 1001 to their decimal equivalents. As in the encoder,
switches will be used to manipulate and represent the unit's binary
input and lamps will be used to display the decimal output. Table 23
indicates the binarytodecimal conversions possible in our computer.
Because our computer output will consist of a maximum of two
binarycoded decimal digits it will be necessary to have two conversion
units and two output displays; one for each fourbit binary output.
The two units are composed of four doublethrow multipole switches.
Each switch represents a digit in a fourbit binary number. When the
switch is thrown to the left it represents a 0, when it is thrown to the
right it represents a 1. The switches are connected to ten lamps repre
senting the ten decimal numbers through 9. The binary numbers
"written" by the switches will light the bulb representing their equivalent
decimal number.
The wiring diagrams and a picture of the finished decoder unit are
included in the construction details at the end of this chapter.
Communicating with the Computer 23
CONSTRUCTION DETAILS— ENCODER
Components: Chassis, rotary switches, display circuit
Materials
Chassis:
2 5 X 8 X Vs in. composition boards
6 % in. dowels, 2Vk in. long (height of spool + X A in.)
12 Vx in. wood screws (no. 4)
Rotary switches (2):
2 thread spools, empty (IVi in. diameter, 1% in. height)
2 V* in. dowels, 3Vs in. long (height of spool + VA in.)
2 1 in. wood screws (no. 4)
5 ft. uninsulated hookup wire (20 gage)
Adhesive tape, 2 in. wide
Display circuit:
8 #48 or 41 lamps (2 v, .06 a)
16 paper clips (large)
2 7 X V4 in. tin strips (from can or sheet)
5 ft. insulated hookup wire (20 gage)
1 ft. uninsulated hookup wire (20 gage)
4 Vi in. machine screws (632)
2 1 in. machine screws (632)
12 nuts (632)
Special tools:
Tin snips
Drill (1/16, 3/32, Vs, !4, %)
Razor blade
Steeledged ruler or straightedge
Round file
Chassis Construction
One of the 5 X 8 in. boards will hold the lamp display and switch
controls. The other will hold the two rotary switches in position underneath
the top panel. The dimensions for this unit are controlled by the size of the
spools used for the rotary switches. If the recommended spool (lVi in.
diameter, 1% in. height) is not available, the placement and length of the
supporting dowels will have to be altered to accommodate the larger or
smaller spool size.
1. Select your top panel and mark and start the drill holes indicated in
Fig. Al.
2. Drill the %in. and Vsin. holes in the top panel. (The %in. holes will
hold the lamps for the encoder display. The Vsin. holes will hold
machine screws for circuit and terminal connections.)
3. Clamp the top panel over the second 5 X 8in. board, lining up the sides,
and drill the 3/32in. and Viin. holes, making sure that the drill passes
24 How to Build a Working Digital Computer
COMPOSITION BOARD: 5  X 8"
+
H 5 *"h
■+■!"■ +
— *■
V
+« — IV
r
iw
*V
T
H— w
iv m
f — iW
Vl.
o^lV4E size code
£.
1/2
IV
I + y, DIA
x 3 /„  DIA
o V, DIA
* 3 /jDIA
Fig. Al.
cleanly through both boards. (The 3/32in. holes will hold the wood
screws securing the dowel supports. The V4in. holes will secure the
axes of the rotary switches.)
With a round file, open up the Win. holes in both boards so that
a V^in. dowel will turn freely in them. Smooth off all rough edges
around drilled holes.
Rotary Switch Construction
The construction details for both switches are the same.
1. Notch the spools as shown in Fig. A2(a).
2. Drill a 1/16in. hole through the diameter of the spool at the head and
base, starting at the foot of each notch (Fig. A2(a)).
3. On the head of the spool, drill a 1/16in. hole opposite the notch into
the head so that the drill comes out close to the hole drilled through
the spool's diameter (Fig. A2(b and c)). Drill a second hole down into
the head V* in. away.
4. Cut a 3Vfein. length of Viin. doweling and insert it through the spool's
center hole. Allow at least Vi in. to protrude from the base (Fig. A2(d)).
(If the dowel does not fit snugly in the spool, wrap tin foil around it for
a tight fit. It may help to file the inside of the spool's center hole to
remove any burrs created by the drill. It is important that the dowel
does not move independently of the spool. If desired, secure it with wood
cement or wedges.)
5. When the dowel is secured properly, drill a 1/16in. hole through the
doweling at the bottom of the spool, using the hole drilled through the
base of the spool in Step 2 as a guide.
6. Insert one end of the uninsulated wire into the hole opposite the notch
on the spool's bottom and push it through so that it protrudes slightly
from the other side.
7. Without cutting the wire, wind it around the spool body, making sure
there are no separations between windings. After every three turns,
pull the wire taut to make the windings as tight as possible. See
Communicating with the Computer
25
DRILL hi"
HOLES
Fig. A2.
END OF WIRE
SECURED
under head
external wire
"nternalwire
(D) FINISHED SIDE VIEW
10.
11.
12.
Fig. A2(d). Before the spool body is completely covered by unin
sulated wire, drill a 1/16in. hole through the doweling at the top of
the spool, using the hole drilled in Step 2 through the head of the spool
as a guide.
When you have covered the spool body to the hole drilled in Step 7,
cut the wire, leaving approximately 3 in. to the end.
Insert the end of the wire into the top diameter hole at the notched side
and push it through. Pull the wire so that all the windings are taut
against the spool body. Then, insert the end of the wire into the 1/ 16in.
hole under the head of the spool and push it through so that it comes out
on top of the spool.
Insert the end of the wire into the second hole in the spool's head and
push it through until a 14 in. loop is left on the top of the spool. See
Fig. A2(d). Secure the end of the wire by bending it under the head of
the spool. Cut off any excess wire protruding beyond the head. Trim off
the wire protruding at the bottom of the spool.
Bend the ] /iin. loop outward as in Fig. A2(d).
Construct a second rotary switch.
Chassis Supports
1. Cut 6 2Vsin. lengths from the %in. doweling. (If your spools are
not the recommended size, these supports should be 14 in. longer than
the height of the spool.)
2. Start a drill hole in the centers of the ends of each support. Drill
approximately !4 in. into each end with the 3/32in. drill.
26
How to Build a Working Digital Computer
5/8"
TOP
«I
X
SUPPORT
DRILL
3/32"
Fig. A3.
TB4 TB3 TB2
O O
*
o° o
o , .
j 2°
2' 2 2
2 > y
• o
o ° o
TBI
\ o __r~
O l
Fig. A4.
ADHESIVE
TAPE
UNDERSIDE OF
TOP PANEL
Mark off four of these supports as shown in Fig. A3.
Drill through the diameter of these four supports, where marked, with
a 3/32in. drill.
Secure the six supports to the bottom of the chassis with %in. wood
screws. The four supports drilled in Step 4 should be placed next to the
Vim. holes. The spacer should be at the top.
Display Lamp Construction
1. The eight display lamps will be placed in the %in. holes in the top
panel so that their glass envelopes protrude approximately V% in. to
V4 in. above the board. Test each hole with a bulb, and file it as needed
to fit the bulb properly.
2. Label the holes on the underside of the panel as indicated in Fig. A4.
This can be done by placing strips of adhesive tape on the board and
printing the proper labels on the tape.
3. For each bulb, construct a base terminal connector as follows. Straighten
out a paper clip as shown in Fig. A5(a) and cut it as indicated. Secure
the paper clip around the screw base of the lamp as in Fig. A5(b) and
crimp it as in Fig. A5(c) to hold the bulb firmly. With your longnose
pliers, turn down the cut ends of the paper clip as shown in Fig. A5(d).
When connecting a lead to the bulb, place the stripped end of the lead
in the angle formed by the clip ends and bend them until the wire is
pinched between them (Fig. A5(e)). This type of base connection will
be used in all lamp displays on all units of the computer.
c
CUT
X
(A)
(0
!D)
i i
Tt
P OF BULB
€T^
(d
^^
(B)
/T\
s
t — i
LEAD
<s
(E)
STRIPPED
END
Fig. A5.
Communicating with the Computer
27
Q
Fig. A6.
I ■,/ A (I J i ^ ft ;l
U)
rsn
.. TIN
7} STRIP
®
TB2 TB3 Tfi4
h o
O^O
o
h o
(B)
o
d
6.
7.
4. Place the eight lamps, with the base terminal connectors attached, in the
%in. holes on the panel top so that their glass envelopes protrude
approximately Vs in. to V4 in. above the panel.
5. Position the lamps so that the base connectors point towards the Viia.
holes at the foot of the panel.
Cut two 7in. strips of tin, Vi in. wide. Buff both sides of each strip.
Shape each strip as indicated in Fig. A6(a). When attached to the top
panel, these strips should contact only the terminal on the bottom of the
lamp. They should not touch the threaded section of the base or the
base terminal connector.
Fit each tin strip onto the board, running them beneath the lamps, as
shown in Fig. A6(a).
Drill through the center of each strip between the 2 1 and 2 2 lamps,
using the V&in. holes on the panel as a guide.
Insert 1in. machine screws through these holes in the top panel and
strips and secure the strips to the lamp bottom terminal with two nuts
(Fig. A6(a)).
Screw Viin. machine screws into the 3 Ms in. holes at the top of the
panel (TB2, TB3, and TB4). Secure these screws with nuts beneath the
panel. Connect insulated leads from TB3 to the 1in. screw securing the
A strip and from TB4 to the 1in. screw securing the B strip.
Cut 8 20in. lengths of insulated wire. Strip V4 in. of insulation from
each end of each wire.
Label the wires by attaching small pieces of adhesive tape to each
end of each wire. Mark the labels with the lamp designations given
in Fig. A4 (A2°, B2°, etc.).
14. Attach the wires to the paperclip lamp connectors. Lead the wires from
the A strip to the left and the wires from the B strip to the right.
10.
11.
12
13
Tape Preparation
1. Wrap a blank piece of paper around the body of one of the wired
spools. Mark off the height of the body and its circumference.
28
How to Build a Working Digital Computer
2. Using the paper with the body dimensions marked on it, divide the
height into four equal levels and the circumference into ten equal
levels. See Fig. A7(a).
1
2
3
4
5
6
7
8
9
2°
2 1
2 J
2 5
CIRCUMFERENCE 
(A)
12 3 4 5 6
USE CARE WHEN REMOVING
IB)
! HEIGHT
OF
SPOOL
Fig. A7.
3. Mark the ruled paper in the fashion shown in Fig. A7(b). This is the
template pattern for the adhesivetape insulation that will cover the
uninsulated wires wrapped around the spool.
4. Place a length of 2in. wide adhesive tape that is slightly longer than
the circumference of the spool on a metal surface, sticky side down,
and cover it with a second layer of 2in. tape.
5. Lay the paper template on top of the tape layers and cut out the
template and tape with a sharp razor and steeledged ruler along the
heavy lines indicated in Fig. A7(b).
6. Peel both layers of tape from the metal surface as one unit. Be careful
that the tape does not tear at the narrow points.
7. Repeat these steps to make a doublelayered covering for the second
rotary switch.
Placing Tape on Spool Body
Care must be taken when selecting where the tape is to be placed on
the spool body. This depends on which spool is to be used for which input
(A or B). Input A will be on the left side of the chassis. The design for A
is such that is at 12 o'clock and the numbers run clockwise to 9. The
switch contact point, however, is between 7 and 8 o'clock.
<T^»
Fig. A8.
Communicating with the Computer
29
1. Insert the spool shafts in the !4in. holes drilled in the bottom board
so that the spool bottom is flush with the board. Place the top panel
so that the top shafts of the spools run through the V^in. holes and
the panel rests on the dowel supports.
2. Rotate the spool to be used as the A input (on the left) so that the wire
loop on the top is positioned at about 8 o'clock. Rotate spool B so
that the loop is positioned at 5 o'clock. See Fig. A8(a).
3. On spool A, mark the area between 7 and 8 o'clock "0." On spool B,
mark the area between 4 and 5 o'clock "0."
4. Remove both spools and attach the tapes to them. Position the part
of the tape where you marked 0. The 2° row, which alternates tape and
no tape, is to be at the top of each spool. See Fig. A8(b).
Switch Connections
1. Place the rotary switches on the bottom board. File off any spool shaft
that protrudes below the board.
2. Position the panel top over the switches, with shafts in the proper
place, and fasten the top to the chassis supports with V2 in wood screws.
3. Straighten 8 large paper clips and cut each one so that it is approximately
3 in. long.
4. Run the paper clips through the holes drilled in the dowels next to the
switches. Position the dowels so that the clips appear as in Fig. A9.
5. Bend the clips for contact on the switch surface as shown in Fig. A9.
Each clip should make contact with the switch approximately in the
center of a horizontal row on the patterned insulation. The contacts
should be aligned vertically as well as horizontally.
6. Tighten and secure the switch contacts by binding the clip ends around
the dowels.
7. Connect the wires from the lamp displays to the switches by attaching
the stripped ends to the ends of the paper clips.
8. Cut two 6in. insulated leads. Strip V4 in. of the insulation from both
ends of each and coil each wire.
9. Attach one end of one wire to the loop on top of spool A. Attach one
end of the other wire to the loop on top of spool B. (See Fig. A 10.)
10. Put a >/2in. machine screw through the drill hole for TBI and attach
the free ends of the coiled wire to it with a nut.
11. Run a 4inch insulated lead between TBI and TB2.
Fig. A9.
4" LEAD
Fig. A10.
30 How to Build a Working Digital Computer
PICKUP ARMS AT ZERO
ffl? m
m
m
INPUT B
Fig. All.
Fig. A12.
8
RTN A B
SO®
»
2 3
o
2 ! 2 1
o®o
ENCODER A
2°
o
o
ENCODER B
TBI
Q
o
ffl A a B 1 ta
Efjir [iigEr
1 NPUT As s INPUT B
Knobs and Labels
1. Position switches A and B so that the contacts rest on 0. With the
switches held in this position, drill a 3/32in. hole through each dowel
protruding above the top panel. Drill each hole toward the top of the
panel so that a 1in. wood screw screwed into the hole will point to the
top of the panel. See Fig. All.
: ; fll
Fig. A13.
Communicating with the Computer 31
2. Put a 1in. wood screw through the holes drilled in Step 1.
3. Label the top panel as shown in Fig. A 12.
4. To prevent the switch pickup from fouling, put mechanical stops
between and 9 of each switch. These can be 1in. brads nailed into
the top of the chassis. Do not drive the nails in too far.
Encoder Checkout Procedure
1. Connect a 114 volt flashlight battery between the RTN and A terminals.
2. Set switch A to each position and check lamps to see that they light as
indicated below (0 = off, 1 = on).
Switch Position Lamps
2 s 2 2 2 1 2°
1 1
2 10
3 11
4 10
5 10 1
6 110
7 111
8 10
9 10 1
3. Repeat Steps 1 and 2 for switch B, connecting the battery between the
RTN and B terminals.
CONSTRUCTION DETAILS— DECODER
Components: Switch chassis, switches, display chassis, display circuit
Materials
Switch chassis and switches:
1 15 x 15 X Ys in. composition board
1 15 X 4 X J /4 in. composition board
4 5 X Yz X Ys in. composition board
4 3 X Yz X Ys in. composition board
20 ft. insulated hookup wire (20 gage)
12 DPDT switches
2 SPDT switches
32 Yzin. wood screws (no. 4)
2 Y2in. machine screws (632)
8 %in. machine screws (632)
12 nuts (632)
Display chassis and circuit:
1 4% x 10 x Ys in. composition board
1 3 x 10 x V* in. composition board
20 #48 or 41 lamps (2 v, .06 a)
20 paper clips
32
How to Build a Working Digital Computer
Fig. Bl.
4 Vz in. machine screws (632)
4 1 in. machine screws (632)
10 nuts (632)
6 Vi in. wood screws (no. 4)
50 1 in. wire brads (approx. count)
2 9Vi X % in. tin strips
25 ft. insulated hookup wire (20 gage)
2 in. uninsulated hookup wire (20 gage)
Special tools:
Tin snips
Drill (1/16, 3/32, Va, %)
Pencil and paper
Ruler or straightedge
Switch Chassis Construction
This panel will hold an array of singlepole, doublethrow (SPDT) and
doublepole, doublethrow (DPDT) switches. The unit is designed for knife
switches mounted on a bakelite base. Manufactured switches are used to
insure switch reliability and durability, which are difficult to maintain with
Communicating with the Computer
33
Fig. B2.
TERMINALS
NO. I
SECURING
HOLE
SECURING
HOLE
TERMINALS
NO. 2
simple, homemade switches. The doublepole, doublethrow model of this
switch is shown in Fig. B2.*
1. The switches are arranged on the panel as shown in Fig. B3. Mark the
15 X 15 X Vsin. panel on its top (smooth side) as shown in Fig. B3.
Then, using the figure as a guide, position a DPDT or SPDT switch
where indicated and mark the position of the switchsecuring holes
with a sharp pencil.
Fig. B3.
1 ltf»
15
+ + p.
1 SPDT 1 OPOT DPDT
«H" ' — ' r=
• ' DPDT
V
• HlVl V«
1SPPTI DPDT t DPDT
DPDT
DPDT °
OPDT
DPDT
DPDT •
DPDT
r DPDT
O
2" <
1" B*
 •
DRILL POINTS FOR
MOUNTING PANEL
TO SUPPORTS
DRILL SIZE:
• ''is'
4.
Start a drill hole at each pencil mark, then drill through the panel with
a 3/32in. drill at each point.
Start drill holes at all other points indicated in Fig. B3 and drill through
the panel with the designated drill.
Mark the 15 X 4 X Viin. board as in Fig. B4 and cut along the
diagonal line. These angle supports will support the switch panel.
Placing the wide ends of the supports at the top of the panel, drill
1/16in. holes along the top edge of each support, using the holes
drilled at the panel side edges in Step 3 as guides.
Secure the angle supports to the panel with Viin. wood screws.
Attach all switches, using V$in. wood screws.
* If you wish to build your switches, a workable switch design is detailed in the
Appendix. Of course, when you substitute homemade switches for manufac
tured, the units will have to be redesigned.
34
How to Build a Working Digital Computer
Fig. B4.
8. Mark for drill holes alongside each switch terminal of each switch.
Drill these holes through the panel with the V&in. bit.
9. As different sets of switches are to be thrown simultaneously, their
handles must be joined. Connect the switch indicated in Fig. B5(a)
in the manner detailed in Fig. B5(b), using the Win. strips of compo
sition board and %in. machine screws and nuts.
10. Using %in. machine screws, insert in two V6in. holes at upper left
side of panel. Secure with two nuts.
Panel Wiring
1. Turn the switch panel over and label the underside as shown in Fig.
B6. These labels will guide you when wiring the switches together.
2. The wiring list for the panel is shown in Chart A. The leads designated
"harness" will be made and connected when the display panel is con
m
IA)
3/4 MACHINE
SCREWS
Fig. B5.
Communicating with the Computer
35
,' 3 ° ' 3 ° ' 3 °
Si A S4j: l\ *S3.° l\ A S2.S
i __P_i I P_i i JU
r 32_, r _fl_2._, o
I °S4Jo l\ °S3J
I OJ
»_l
I A S8 J
bij {raJzj
:, c s % j: : L °« d :
i — jj
i »_i
°2
° S5 
Fig. B6.
nected to the switch panel. Following Chart A, use 20 gage insulated
hookup wire to connect the designated terminals. Do this by running
uncut wire from terminal to terminal to the determine the needed
length; cutting the wire % in. longer than this length; stripping Va in.
insulation from each end of the cut wire; and connecting wire ends to
the proper terminal. As some terminals have more than one connection,
do not secure wires until all connections have been made.
Chart A
10 1 Switches
10° Switches
From
To
From
To
TBI
Sl3
TBI
S53
Sl2
S2A3
S52
S6A3
S2A2
S3A3
S6A2
S7A3
S3A2
S4A3
S7A2
S8A3
S4A2
Harness
(0)
S8A2
Harness (0)
Sl1
S2B3
S51
S6B3
S2B2
S3C3
S6B2
S7C3
S3C2
S4E3
S7C2
S8E3
S4E2
Harness
(8)
S8E2
Harness (8)
S2A1
S3B3
S6A1
S7B3
S3B2
S4C3
S7B2
S8C3
S4C2
Harness
(4)
S8C2
Harness (4)
S3A1
S4B3
S7A1
S8B3
S4B2
Harness
(2)
S8B2
Harness (2)
S3B1
S4D3
S7B1
S8D3
S4D2
Harness
(6)
S8D2
Harness (6)
S4A1
Harness (1)
S8A1
Harness (1)
S4B1
Harness (3)
S8B1
Harness (3)
S4C1
Harness (5)
S8C1
Harness (5)
S4D1
Harness (7)
S8D1
Harness (7)
S4E1
Harness
(9)
S8E1
Harness (9)
TB2
Harness
(B)
36
How to Build a Working Digital Computer
4 3 / 4 "
X
• 2''4H
* + *
x T
1'
* + * *
X
3 'eH
« +
■K *
* + * *
* +
X
X
X
t
10"
>l
 DRILL SIZE:
* V
* V
* V
(A)
Fig. B7.
Display Chassis Construction
1. Mark the 4% X 10 X Vis in. board as indicated in Fig. B7(a) and
start a drill hole at each indicated point. This is the top panel of the
display chassis.
2. Drill holes through the chassis at each point with the indicated bit size.
3. File each %in. hole so that the bulb of a lamp will protrude approx
imately Vs in. above the panel when the lamp is fitted into the hole.
4. Mark the 3 X 10 X V4in. board as shown in Fig. B7(b) and cut along
the diagonal line to form two angle supports.
5. Placing the support pieces as shown in Fig. B7(c), drill 6 3/32in.
holes into the supports, using the 3/32in. holes in the top panel as a
guide.
Communicating with the Computer
37
Fig. B8.
FOR WIRE LENGTHS, SCALE IS
8" TO EACH I" III THIS
ILLUSTRATION, ADO 11/2"
ON EACH EDO OF WIRE FOR
CONNECTIONS.
note:
separation
OF WIRES \
ONLY FOR \
CLARIFICATION
4=
10'
TB2
6. Secure the top panel to the supports with V^in. wood screws.
Wire Harness and Display Circuit Construction
1. To streamline the connections between the display lamps and switches,
the wire runs will be ganged in harnesses. The harnesses are to be
laid out on patterns and transferred to the unit when finished, as
detailed below. They should be carefully constructed and tied securely
at all indicated points to minimize adjustments when they are moved
from pattern to chassis.
Figure B8 is a representation of the harness pattern, drawn to
scale. Reproduce this pattern on a large sheet of paper at actual size,
following the dimensions indicated in Fig. B8.
2. Place the pattern on a wooden bench or work area into which nails
may be driven. Drive a 1in. brad into each point indicated by a dot
on the pattern, so that the brad is secure and at least % inches of it
protrude from the pattern.
3. Both harnesses are identical except for length. Figure B9 illustrates
the shortest harness. Following Chart B, measure and cut the indicated
lengths of 20 gage, insulated hookup wire. Strip % inch of insulation
from each end of each wire and label each wire at each end with the
lamp number (00, 01, 02, etc., for 10° lamps; 10, 11, 12, etc., for
10 1 lamps).
38
How to Build a Working Digital Computer
ja
nn.
f
m.
m
ff).
UJl
m.
Fig. B9.
When all lengths are cut and labeled, construct wire harnesses as follows:
(a) Start each harness with the wire connecting the lamp furthest from
the switch chassis (the and 1 lamps) and complete each harness
with the lamps nearest the switch chassis (the 8 and 9 lamps).
(b) Place the proper wire in position, running it through the brads
opposite the lamp hole, and bending it so that it will run through
the brads at the bottom of the chassis. Run the wire as shown in the
harness diagram until it is opposite its proper switch terminal. Place
each wire for each harness on the pattern in this fashion. At the
Chart B
10«
10i
Wire
Length
Connect To
Wire
Length
Connect To
00
27
S8A2
10
25
S4A2
01
29
S8A1
11
29
S4A1
02
27
S8B2
12
25
S4B2
03
29
S8B1
13
29
S4B1
04
28
S8C2
1^.
26
S4C2
05
30
S8C1
15
30
S4C1
06
28
S8D2
16
26
S4D2
07
30
S8D1
17
30
S4D1
08
29
S8E2
18
27
S4E2
09
31
S8E1
19
31
S4E1
B
25
TB2
Communicating with the Computer
39
Fig. B10.
5.
7.
8.
point where each wire joins the others in the harness, secure it to
the previously positioned wires with thin, short strips of adhesive
tape. Also, tape the completed harness every few inches to hold the
wires firmly in the position in which they were laid out.
(c) The finished harnesses should appear as in Fig. B9. At the end
where the wire contacts the lamp, bend the stripped portion at an
angle of 90° so that it lies parallel to the main branch of the harness.
Construct 20 base terminal connectors with paper clips for the 20 lamps
as was done for the lamps on the encoder panel. Test each bulb to see
that it works.
Place each lamp in position on the top panel with the connectors pointed
in the directions indicated in Fig. B10.
Cut 2 9Viin. tin strips, each % in. wide.
Secure these strips to the underside of the panel as shown in Fig. Bll.
Fig. Bll.
UNINSULATED
WIRE CONNECTOR
40 How to Build a Working Digital Computer
Use the V6in. holes in the panel as a guide for drilling holes through
the strips. Secure each strip at both ends with nuts and VSin. machine
screws and at each interior point with a nut and 1in. machine screw.
Be certain that the strips are in contact with the bottom of each lamp
and no other lamp part. Connect both strips with a short piece of
uninsulated wire.
9. Lay the harnesses in position alongside the rows of lamps. Connect
each wire to its proper bulb, securing the wire firmly by squeezing
the terminal connector wires tightly together. Connect B  to tin strip screw.
10. When all bulbs are connected, place the harnesses in the proper posi
tions on the underside of the switch panel and connect the wire ends
to the proper terminals, following Chart B as a guide.
11. Label the switch panel as shown in Fig. B5(a) and the lamp display
panel as shown in Fig. B7(c).
Decoder Checkout Procedure
1. Connect a IVivolt flashlight battery between the RTN and ANS ter
minals.
2. Set all 10 1 and 10° switches to 0. Check that the lamps for the 10 1
and 10° digits are lighted.
3. In order, set each switch (10 1 and 10°) to each of the positions listed
in the lefthand columns below and check to see that the indicated
lamps light.
Decimal
Representation
1
2
3
4
5
6
7
8
9
Switch Position
2 s
22 2 1 2°
1
1
1 1
1
1 1
1 1
1 1 1
1
1
1
Chapter 3
COMPUTERS AND LOGIC
Although highly complex in appearance, the circuitry of the digital
computer is composed of a handful of basic switching circuits that are
repeated thousands of times. These circuits control the movement of
electrical signals representing the bits (binary digits) used in computer
operations. When designing computers or establishing a computer's
problemsolving abilities it is necessary to determine the manner in
which these circuits are to be interconnected. Also, it must be deter
mined what circuit combinations are appropriate for each type of
problem.
Such design and problemsolving relationships can easily be worked
out by analyzing the circuits in terms of symbolic logic. These terms
may not be familiar to you, but you use the theory behind them every
day. Let us examine the basic terms of logic in light of our everyday
experience and then prescribe some basic rules for their application.
First, let us consider a statement. From our studies of English
we are all familiar with the definition of this term: a statement is an
assertion. The previous sentence contains two statements separated by a
colon. It is important to note that the fundamental property of any
statement is that it is either true or false but never both true and false.
The next definition to consider is that of a compound statement.
Again from our English studies, we know that a compound statement
consists of two or more simple statements connected by conjunctions
such as and and or. Compound statements also possess the property
that they are either true or false. However, evaluating the truth of a
compound statement is an exacting science and is the heart of the study
of logic.
The study of compound statements can be divided into two facets :
1. In how many different ways can statements be compounded.
2. How do we determine the truth value of a compound knowing
the truth value of its component simple statements?
In the study of logic, there are two basic conjunctions frequently
used to compound statements: AND and OR. To illustrate the use of
these conjunctions, let us make the following simple statements:
(a) It is raining.
(b) We are getting wet.
41
42 How to Build a Working Digital Computer
If we wish to make a compound statement asserting that both simple
statements are true, we use AND.
It is raining AND we are getting wet.
This statement is only true if both simple statements are true. On the
other hand, we may make a weaker assertion using the conjunction OR.
It is raining OR we are getting wet.
In this case, it is only necessary for a minimum of one of the simple
statements to be true in order for the compound to be true. Hence, we
can summarize the rules for evaluating compound statements as follows:
AND Rule
A compound joined by the conjunction AND is true only if all of its
component simple statements are true. In all other cases, the compound
is false.
OR Rule
A compound joined by the conjunction OR is true only if one or
more of its component simple statements is true. It is false only if all
of its component simple statements are false.
A third logical modifier is used to indicate a negative. This modi
fier is NOT. For example:
It is NOT raining.
The rules governing truth and falsity of statements using this modifier
are obvious.
SYMBOLS
In order to work with and evaluate compound statements, it is
convenient to establish a set of shorthand symbols to represent the
various statements and conjunctions. Let us use lowercase letters to
indicate statements, for example:
Let a = It is raining.
Let b = We are getting wet.
Also let us use the symbols + and • to indicate OR and AND as follows:
Let OR = +
Let AND = •
Finally, let us use a bar over the statement to indicate NOT as follows:
Computers and Logic
43
Let £= It is not raining.
Let b = We are not getting wet.
To further illustrate the symbols just established, consider the following
list of symbolic statements and their English counterparts:
SYMBOLIC STATEMENT
1. a • b
2. a + b
3. (a • b) + (a • b)
4. a • (b + b)
5. (a + a) • b
6. fafb + b)] + [b.(a+a)l
ENGLISH EQUIVALENT
1. It is raining and we are getting wet.
2. Either it is raining or we are getting
wet (or both).
3. Either it is raining and we are getting
wet, or it is not raining and we are
not getting wet.
4. It is not raining and either we are
getting wet or we are not getting wet.
5. Either it is raining or it is not rain
ing, and we are not getting wet.
6. Either it is raining and either we are
getting wet or we are not getting wet,
or we are getting wet and either it is
raining or it is not raining.
Examining these statements, especially 5 and 6, we can notice
some redundancy. For example, in statement 6, look at the terms
(a ( ~a) and (b + b). Since there are only two possible conditions
(either it's raining or it's not raining, and either we are getting wet or
we are not getting wet), these sets of terms are meaningless. After all,
the terms (a + a) (either it is raining or it is not raining) must be true
and goes without saying since there are no more possible conditions.
This being the case, statement 6 in the list could just as meaningfully
reduce to the statement (a + b), either it is raining or we are getting
wet. Reducing logic terms in this fashion is called minimization and
plays a prominent role in the efficient design of digital computers.
Minimization will be discussed later.
TRUTH TABLES
Sometimes it is convenient to draw up a table that lists the truth
or falsity of a logic statement (simple or compound) for every possible
condition or combination of conditions for that statement. As an
example, let us consider the compound statement (a • b). There are
four possible conditions for this statement since each simple statement
44
How to Build a Working Digital Computer
can assume one of two conditions, true or false. If we tabulate these
conditions and then tabulate the truth value of the compound for each
set of conditions we have :
a
b
a • b
T
T
T
T
F
F
F
T
F
F
F
F
where T indicates true and F indicates false. This table is called a truth
table since it indicates the truth value of the compound for every possible
variation of individual truth values of the component simple statements.
An important theorem concerning truth tables is that statements having
identical truth tables are equal.
A sample of a truth table for a higherorder compound statement
is provided below:
a
b
c
d
a • b . (c + d)
T
T
T
T
T
T
T
T
F
T
T
T
F
T
F
T
F
T
T
F
F
T
T
T
F
T
T
F
F
T
T
F
F
T
F
F
F
T
T
F
T
F
T
F
F
F
T
F
T
F
F
T
T
F
F
T
F
F
F
F
F
T
F
F
F
F
F
T
F
F
F
F
F
T
F
F
F
F
F
F
Computers and Logic
LOGIC CIRCUITS
45
The question, now that the basic rules of logic have been denned, is
"How can they be used?" We could, of course, use them as part of a
simple mental exercise to test our powers of reasoning or we could
build machines to solve problems for us logically. If we wish to build
machines of this sort, however, we must learn to build devices that can
evaluate the truth of compound statements. Devices of this sort are
called logic circuits because they are electrical devices that simulate the
basic rules of logic we have learned.
The first rule discussed was the AND rule, which stated that a
compound statement is true only if all of its component simple state
ments are true. The compound a ■ b ■ c (a AND b AND c) is true only
if a is true and b is true and c is true. Therefore, we would like a device
that provides a true indication only when all of the simple statements
are individually true. The circuit illustrated in Fig. 31 is such a device.
In this circuit, the lamp lights only if switches A, B, and C are all
closed. Switch A is closed when simple statement a is true; switch B is
closed when simple statement b is true; and switch C is closed when
simple statement c is true. Hence, the lamp lights only when the com
pound statement (a ■ b • c) is true.
j >^.... i>  1 ! ,
SCHEMATIC DIAGRAM
LAMP
WIRING DIAGRAM
Fig. 31. An AND circuit.
The second rule discussed, the OR rale, asserted that a compound
statement is true if one or more of its component simple statements is
true. The compound a + b + c (a OR b OR c) is true if either a is
true or b is true or c is true, or any combination of the three simple
statements is true. Therefore, we would like a device that provides a
true indication only when one or more of the simple statements is
individually true. The circuit illustrated in Fig. 32 is such a device.
46
^"El
How to Build a Working Digital Computer
osi
— ?s <fc
JSB
sSC
SCHEMATIC DIAGRAM
SWITCH J
Fig. 32. An OR circuit.
XSWITCHB
1
^SWITCH C
WIRING DIAGRAM
In this circuit, the lamp lights only if any single switch or com
bination of switches A, B, or C is closed. As before, switch A is closed
when simple statement a is true; switch B is closed when simple state
ment b is true; and switch C is closed when simple statement c is true.
Hence the lamp lights only when the compound statement (a \ b \ c)
is true.
_ The third rule discussed was the NOT rule, in which the statement
a (NOT a) is true only if the statement a is not true. Figure 33 illus
trates a circuit that mechanizes the NOT rule. In this circuit, the switch
is placed in the a position when the statement a is not true thereby
SA
o—
DSI
=P El
SCHEMATIC DIAGRAM
1°
'SWITCH A
■BATTERY
LAMP
Fig. 33. A NOT circuit.
Computers and Logic
47
B+
Fig. 34.
Cy o(b+c)
^ri— ®
c o
Fig. 35.
(o+b)c
o^o (ac)+(5b)+(bc)+(abc)
Fig. 36.
lighting the lamp. When the statement a is true, the switch is placed
in the a position, causing the lamp to go out. In this case, the statement a
is not true. It is important to note that in logic, as in English, a double
negative results in a positive. Therefore, if the statement ~a is not true,
the statement a is true. When using the NOT circuit in conjunction
with the AND and OR circuits let us use the convention that the NOT
switches will be shown normally closed, while all other switches will
be shown normally open.
Now let us examine the use of logic circuits to instrument various
compound statements. These circuits are shown in the indicated figures.
COMPOUND STATEMENT
a 
(b +
c)
3
4
(a
+ b)
• c
3
5
(a
• c) +
(a.
b)r
(b
c
+ (a
b
c)
3
6
FIGURE
TRUTH EVALUATOR
Our study of truth tables and their significance in logic can be
aided considerably by the use of a simple mechanism that will illustrate
and evaluate the truth values of compound statements. Although this
truth evaluator must be capable of simulating any combination of logical
conjunctions, we will limit the number of simple statements to three.
Refer to the construction details at the rear of this chapter and con
struct the truth evaluator. It will be used in the following experiments.
48
How to Build a Working Digital Computer
EXPERIMENTS WITH TRUTH TABLES
1. Set up the evaluator as illustrated in Fig. 37 for a ■ b • c and
check all eight conditions of this statement against Truth Table A.
2. Set up the evaluator as illustrated in Fig. 38 for a f b f c and
check all eight conditions of this statement against Truth Table B.
3. Set up the evaluator as indicated in Fig. 39 for (a + b) ■ c and
check all eight conditions of this statement against Truth Table C. _
4. Set up the evaluator as illustrated in Fig. 310 for (a • b) + c
and check all eight conditions of this statement against Truth Table D.
SWITCH*
POSITIVE LEAD i"** 5 *^ ^
WIRE
FROM
TO
POSITIVE LEAD
BATTERY (+1
SWITCH Ad)
1
SWITCH A (2)
SWITCH B (1)
2
SWITCH B (2)
SWITCH C (1)
3
SWITCH C 12)
LAMP (1)
WIRING DIAGRAM
SCHEMATIC DIAGRAM
Fig. 37. The evaluator
setup for a ■ b • c.
TRUTH TABLE A. (a • b • c)
a
b
c
a • b ■ c
T
T
T
T
T
T
F
F
T
F
T
F
F
T
T
F
T
F
F
F
F
F
T
F
F
T
F
F
F
F
F
F
Computers and Logic
49
TRUTH TABLE B. (a + b + c)
a
b
c
a+b+c
T
T
T
T
T
T
F
T
T
F
T
T
P
T
T
T
T
F
F
T
F
F
T
T
F
T
F
T
F
F
F
F
TRUTH TABLE C. (a + b) • c
a
b
c
(a+b).c
T
T
T
T
T
T
F
F
T
F
T
T
F
T
T
T
T
F
F
F
F
F
T
F
F
T
F
F
F
F
F
F
TRUTH TABLE D. (a • b) + c
a
b
c
(ab) + c
T
T
T
T
T
T
F
T
» T
F
T
F
F
T
T
F
T
F
F
T
F
F
T
F
F
T
F
T
F
F
F
T
50
How to Build a Working Digital Computer
POSITIVE LEAD
WIRE
FROM
TO
POSITIVE LEAD
BATTERY (+)
SWITCH A (1)
1
SWITCH A (1)
SWITCH B (1)
2 _,
SWITCH A (2)
SWITCH B 12)
3
SWITCH 6(1)
SWITCH C (1)
4
SWITCH B (2)
SWITCH C (2)
a
SWITCH C (2)
LAMP II)
WIRING DIAGRAM
A
'"NLi' ds "'
SCHEMATIC DIAGRAM
Fig. 38. The evaluator
setup for a + b + c.
POSITIVE LEAD
SWITCH A
WIRE
FROM
TO
POSITIVE LEAD
BATTERY (+)
SWITCH A (1)
1
SWITCH All)
SWITCH B (1)
2
SWITCH A (2)
SWITCH B 12)
3
SWITCH B (2)
SWITCH C (1)
4
SWITCH C (2)
LAMP (1)
SA
Fig. 39. The evaluator
setup for (a + b) • c.
fXKzr
WIRING DIAGRAM
S." c
DSI
SCHEMATIC DIAGRAM
Computers and Logic
51
LAMP
Fig. 310. The evalu
ator set up for (a ■
b) +c.
WIRE
FROM
TO
POSITIVE LEAD
BATTERY !+)
SWITCH A (1)
1
SWITCH All)
SWITCH C (1)
2
SWITCH A (2)
SWITCH BID
3
SWITCH B (2)
SWITCH C (2)
4
SWITCH B (2)
LAMP (1)
WIRING DIAGRAM
NOTE: SWITCH CIS CLOSED FOR . ,
C AND OPEN FOR C , "^^J
SCHEMATIC DIAGRAM
BOOLEAN ALGEBRA
As demonstrated, the circuit combinations used in computers can
be represented and analyzed in terms of symbolic logic. The different
configurations we used with the truth evaluator experiments are good
examples of the manner in which logic circuits combine. Such circuit
combinations in computers, however, are much more complicated,
although the basic circuit elements remain the same. Planning these
circuit combinations with logic statements is an adequate method, but
it is not entirely satisfactory. This is so because, in many cases, the
combinations of logic circuits can be simplified, thereby eliminating
unnecessary components and reducing expense and construction time.
This simplification is carried out by the use of a form of algebra called
Boolean algebra, which is named after its inventor, George Boole. By
applying the rules of Boolean algebra to logic statements, we can simplify
the statements by minimizing terms.
Boolean algebra uses the same logical conjunctions that we have
already described: AND, OR, and NOT. However, instead of using
T and F to indicate whether a statement is true or false, the binary
numerals 1 and are used. Using this convention, the following rules
can be derived from the basic AND, OR, and NOT rules given at the
beginning of this chapter.
52
How to Build a Working Digital Computer
AND
OR
NOT
1.1 = 1
1 + 1 = 1
T =
10 =
1 + = 1
= 1
01 =
0+1 = 1
T =1
00 =
+ =
ff = o
Further expansion using 1 and in place of T and F results in these
additional rules:
AND
OR
NOT
A • =
A + = A
A = A
A • 1 = A
A+ 1 = 1
A . A = A
A + A = 1
A . A =
A + A = A
In regard to the algebraic manipulation of terms, Boolean algebra
is very similar to regular algebra. For example the following statements
represent rules for simple AND and OR statements.
A+B=B+A
AB=B • A
(A + B)+C = A+(B + C)
(A B) ■ C = A (B C)
The relative positions of the terms are of no significance in AND or OR
statements (commutative and associative laws). Also (distributive law):
AB + AC = A(B + C)
(A + B) • (A + C)=A + BC
These equations can easily be proved by constructing truth tables
for each side of the equation and comparing your results. If both state
ments in each equation produce the same truth table, they are equal.
The required truth tables are:
a
b
c
a • b + a • c
a • (b + c)
1
1
1
1
=
1
1
1
1
=
1
1
1
1
=
1
1
1
=
1
=
1
=
1
=
Q
Q
=
n
Computers and Logic
53
a
b
c
a + b ■ c
=
(a + b). (a+c)
1
1
1
=
1
1
=
1
1
=
1
1
=
1
=
1
=
1
=
=
From this discussion, we can see that it is possible to reduce the number
of terms and conjunctions in a Boolean equation (statement) by applying
the basic rules, factoring, rearranging, etc., while still maintaining
equality. This leads us to our next topic, minimizing terms.
MINIMIZING TERMS
In our study of Boolean algebra, we saw how two equal statements
or equations might have different numbers of terms and conjunctions.
The process of determining the smallest equal logical statement, given
an original statement, is called minimization. To illustrate the effect of
the minimization process, consider the statement a + (a • b). This
statement can be instrumented by a logic circuit such as that shown in
Fig. 311. Note that this logic circuit contains three switch poles. How
Fig. 311. The logic circuit
for a + (a • b).
ever, by applying some of the rules of Boolean algebra we can reduce
the number of terms as follows:
OPERATION
BOOLEAN RULE
a.[l + (l.b)]
a (1)
a
a ■ 1 = a
1 + b = 1
a • 1 = a
Therefore, a \ (a ■ b) equals a. The circuit configuration for this state
ment, Fig. 312, needs only one switch pole. Hence, by the process
54
How to Build a Working Digital Computer
Fig. 312. The logic circuit for a. +_
of minimization, the circuit complexity has been reduced by twothirds.
As a further example, take the statement:
a ■ b ■ c\ a b • c \ c ■ (a ■ b f a • b) + c • (a • b \ a • b \ a • b)
The circuit for this statement in its present form is illustrated in Fig. 313.
Fig. 343. The logic circuit
of a • b _^_c + a _b • c_j
c • (a • b +j ■ b) + c •
(a • b + a • b +~a • b).
This circuit requires 18 switch poles. Now, apply the rules of Boolean
algebra to minimize terms:
1. Factor a • c from the first twqterms:
__ a • c • (b + b) = a • c
since (i_+ b) must equal 1.
2. Factor b from the third term:
_ c • b • {a + a) = c • b
3. Factor c ■ b fromjhe last term: _
c • b • (a + a) f cab = c • b + abc
4. Now, the statement is:
ac + cb+c~b{ abc
5. Factor b from the_second and third terms: _
a • c + b • (c \ c) \ abc = a • c + b + abc
6. Since the b term in the last term is meaningless, because of b in the
middle term (i.e., if b — 0, the statement is 1 due to the b term, and if b
is 1 the statement is a • c \ a • c), the b term can be dropped and the
minimized statement becomes: _ _
a • c + b f a ■ c
Fig. 314. The logic circuit
for a ■ c + b +"a"+ c.
O — o
0 o
Computers and Logic
55
The minimized statement, a ■ c f b j a ■ c, is equal to the original
statement as illustrated by their truth tables, which follow. This state
ment may be instrumented using the circuit of Fig. 314. Notice that
now only 5 switch poles are required instead of the original 18.
a
b
c
abc
ab.c
c(ab+ab)
c(a.b+ab+a.b)
ab c+abc+c(ab+ab) +
c(ab+ab+ab)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
a
b
c
ac
b
ac
a c+b+ac
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
DE MORGAN'S THEOREM
A very valuable tool in the study and application of logic and
Boolean algebra is De Morgan's theorem. This theorem says that the
statement "NOT: aor6orc" is equivalent to the statement "nota and
notb and notc," or, in Boolean algebra:
(a + b{c)—a ; bc
This theorem provides a relationship between the AND and OR con
nectives and thereby allows interchanging connectives for convenience.
A further reason for the importance of this theorem is its widespread
use in transistorized logic circuits. Many circuit designs that us e tran
sistors employ basic circuit units that instrument the logic a ■ b or a f b;
56
How to Build a Working Digital Computer
SWITCH A
LAMP*
* NOTE: IN THIS CASE.WHEN LAMP LIGHTS, INDICATES A ZER0;WHEN LAMP STAYS OUT.INDICATES A ONE
WIRE
FROM
TO
POSITIVE LEAD
BATTERY (+)
SWITCH A (1)
1
SWITCH A (1)
SWITCH B (1)
2
SWITCH A (2)
SWITCH B (2)
3
SWITCH B (2)
LAMP (1)
T
i_
WIRING DIAGRAM
— o ^o—
SB
DSI
SCHEMATIC
Fig. 315. The evaluator setup for a + b.
i.e., NAND (notand), or NOR (notor). With this l ogic, to instrument
the statement a • b, you ma y use a_NOR circuit (a \ b) since by
De Morgan's theorem, a + b equals a ■ b.
To prove the equivalence of the two parts of De Morgan's theorem,
set up the truth evaluator in Figs. 315 and 316 to determine that both
SLattlllWilLS liavu uit iwiiUvYuig uuui lauiv.
Fig. 316. The evajuator
setup for a • b.
SWITCH A
LAMP
POSITIVE LEAD
"NOTE: SWITCHES MUST NORMALLY BE CLOSED FOR THIS SETUR WHEN a>
IS TRUE, SWITCH A IS OPENED AND VICE VERSA.
WIRE
FROM
TO
POSITIVE LEAD
BATTERY (+)
SWITCH All)
1
SWITCH A (2)
SWITCH BID
2
SWITCH B (2)
LAMP (1)
WIRING DIAGRAM
SA
0 o
I
SB
L©2
DSI
T_
SCHEMATIC DIAGRAM
Computers and Logic
57
a
b
a+b
a.b
1
1
1
1
1
1
THE UN PROBLEM— AN EXPERIMENT IN LOGIC
This problem consists of devising a means for instantaneously
registering the results of a secret vote taken in an organization built
along the lines of the United Nations Security Council. The organization
consists of five members, each of whom may vote yes or no inde
pendently. In addition, two of the five members have a veto power; i.e.,
if either or both of these members exercise their veto the result is no,
regardless of the votes of the other members.
Each member of the organization has a switch assigned to him
which he must close for a yes vote or open for a no vote. If the members
are designated A, B, C, D, and E, the following statements may be
defined:
Statement Meaning
a Member A votes yes
b
c
d
Member B votes yes
Member C votes yes
Member D votes yes
Member E votes yes
Finally, let us assign the previously mentioned veto power to members
A and B.
The problem has thus been completely defined. The first step in the
logical design of this device is to write the logical statement of the
problem which, in this case, is the compound statement corresponding to
a yes vote. From the logic of the problem:
a ■ b • (c + d + e) = YES
Both a and b must be true to satisfy the veto condition, and at least one
of statements c, d, or e must be true to provide a majority.
SWITCH A SWITCH B SWITCH C UHP
Fig. 317.
58 How to Build a Working Digital Computer
The logic circuit which instruments this logical statement so that a
lamp lights to indicate a YES result is illustrated in Fig. 317. Refer to
the construction details at the rear of this chapter and build the voting
machine.
Computers and Logic
CONSTRUCTION DETAILS— TRUTH EVALUATOR
Components: Panel, switches, battery holder
59
Fig. Cl.
Materials
1
8 X 10 X Vfc in. composition board
1
battery holder (construction details follow)
3
Vi in. machine screws (632)
3
nuts (632)
7
Vi in. wood screws (no. 4)
9 ft. insulated hookup wire (20 gage)
39
paper clips
1
#48 or 41 lamp (2 v, .06 a)
Special tools:
Drill (i/s, 3/32)
Truth Evaluator Construction
1. Mark the 8 X 10 X V%m. composition board as in Fig. C2.
2. Start drill holes at each point and drill as indicated. (The Vsin. holes
will hold machine screws for switch and terminal connections.)
Fig. C2.
ARM CONTACT
+ '/,
60
How to Build a Working Digital Computer
3.
4.
Each SPST switch is made from 2 paper clips. Bend 3 paper clips as in
Fig. C3(a). Bend 3 other paper clips as in Fig. C3(b).
Cut each paper clip for each configuration as shown in Fig. C3. The
Vi in. section will be crimped around a wood screw to secure the switch
parts on the panel in an upright position.
The quickdisconnect terminals are also made with paper clips. Their
configuration and use are shown in Fig. C4. Construct 8 of these
terminals.
10.
Fig. C4.
Install 6 quickdisconnect terminals and 3 SPST switches on the panel
top as shown in Fig. C5. Use Viin. wood screws. Note that each arm
or contact of the SPST switches has a quickdisconnect terminal attached
to it. Put the switch arms in the first vertical row on the left side of the
panel (as illustrated) with the arms pointing toward the right side of
the panel. Place the contacts so that the open loop is towards the top
of the panel. As each quickdisconnect terminal and switch contact
or arm is secured in place, crimp the arm or contact around the screw
to hold it upright on the board.
When the switches are in place, cut each arm so that it extends past
the contact about Va in.
Cut each contact so that it is about Vi in. long on the open loop.
Bend the switch arms to the outside of the contact so that there is
enough tension to spring the arm away from the contact when it is not
locked in place. The make or break motion is similar to the opening
or closing of a safety pin.
Cut three 7in. lengths of insulated wire and strip V2 in. of insulation
from each end of each length.
QUICK DISCONNECT SPST.
WOOD SCREW
Fig. C5.
14.
Computers and Logic
TO BATTERY HOLDER
WIRE A
61
WIRE G
LAMP B
TERMINAL
11.
12.
13.
Fig. C6.
As in Fig. C6, place Viin. machine screws in holes A, B, and C
and attach nuts. Do not tighten the nuts.
Attach one 7in. wire and a quickdisconnect terminal to the screw
in hole A and attach wires to B and between B and C, as indicated in
Fig. C6.
Construct a lamp socket by wrapping a paper clip around the base of
the lamp, as illustrated in Fig. C7(a).
15.
Fig. C7.
Attach the socket constructed in Step 13 and a quickdisconnect
terminal to point D (Fig. C7(b)) with a Viin. wood screw. Caution:
The socket should be positioned directly over the machinescrew head
acting as the B— terminal. The socket, however, should never touch this
terminal, but it must be close enough to it so that the base of a bulb
screwed into the socket will contact the terminal.
Label the switches and terminals as shown in Fig. C8.
Fig. C8.
STRIPPED WIRE
WRAP WIRE TIGHTLY
AROUND CLIP HERE
Fig. C9.
62
How to Build a Working Digital Computer
16.
17.
Cut 6 9in. lengths of insulated hookup wire and 6 5in. lengths. Strip
% in. of insulation from each end of each wire.
Attach each end of each wire to a paper clip as shown in Fig. C9.
Use these wires to make the various connections in the experiments
involving the truth evaluator by clipping the wires to the appropriate
quickdisconnect terminals. Always make certain that the connections
are solid before proceeding with the experiment.
CONSTRUCTION DETAILS— BATTERY HOLDER
Components: Chassis, batteries
Materials
1
8
2
4 x 5 X Vi in. block of wood
1V& in. wire brads
Wi volt flashlight batteries
*i i in r" s.'liiiis screws ^6~32^
8 nuts (632)
1 ft. insulated wire (20 gage)
Adhesive tape
Chassis Construction
1. Place the batteries side by side, facing them in opposite directions. Tape
them together.
2. Put the batteries in the center of the 4 X 5 X Vzva.. block and secure
them on both sides with brads driven into the block. See Fig. C10.
TAPE
BRADS
Fig. C10.
Drive brads into the block at both ends of each battery, making sure
that contact is made between each battery terminal and the brad in
front of it. See Fig. C10.
At one end of the block, jump a short length of insulated wire, stripped
at its ends, between the two brads.
At the other end of the block, connect a single wire to each brad.
Drill two 3/32in. holes at the front edge of the wood block, immediately
in front of the brads that have single wires connected to them. See
Fig. Cll.
On the bottom of the block, enlarge the holes drilled in Step 6 so that
Computers and Logic
63
c J
DRILL V
HOLES
Fig. Cll.
TOP VIEW
BLOCK
Fig. C12.
they will accommodate the nuts for a 1in. machine screw. See Fig. C12.
8. Place three nuts on each of the 1in. machine screws. Advance each
nut so that the last one screwed on is approximately Vz inch from the
end of the screw.
9. Insert the screws into the drilled holes from the top of the block. Secure
them with a fourth nut on the bottom. As in Fig. C12, tighten the
bottom nut and the top nut nearest the block to make the screw rigid.
10. Attach the free end of the wire connected in Step 5 from the brad to the
screw, placing it between the nuts marked 2 and 3 in Fig. C12. Do this
with both of the free wires. Tighten nut 2 down onto nut 3.
12. Use additional tape to ensure that the brads continually make contact
with the battery terminals.
13. To use the batteries to power computer units, connect the power leads to
the screw between nuts 1 and 2 and tighten nut 1 down onto nut 2.
CONSTRUCTION DETAILS— UN PROBLEM
Components: Panel, switches, battery holder
Materials
1
12
12
10
1
1
8 X 10 X Vs in. composition board
Vi in. machine screws (632)
nuts (632)
5 ft. insulated hookup wire (20 gage)
paper clips
battery holder (see truth evaluator construction details)
#48 or 41 lamp (2 v, .06 a)
UN Problem Construction
1. Mark the 8 X 10in. board as shown in Fig. Dl.
2. Start drill holes and drill through the board with indicated bit size.
64
How to Build a Working Digital Computer
3.
4.
5.
♦ K
Fig. Dl.
Fig. D2.
Make 5 SPST paperclip switches. Refer to the truth evaluator con
struction procedures for construction details.
Install the SPST switches at points A through E using Viin. machine
screws and nuts.
Make a bulb socket following the details given in the truth evaluator
construction details.
M. 111UW11I11V
hir
at T»#«rif ■?. atiH ssciirfi if with s ni:
Trefoil
J.lli!) LU.ll
Attach the socket constructed in Step 5 to a machine screw at point 1
(Fig. D2). The socket should be positioned directly over the machine
screw head at point 2. The socket, however, should not touch the
machine screw. Place it so that the base of the bulb it holds will main
tain contact with the machine screw.
Wire the board as shown in Fig. D2 with insulated hookup wire.
Label the panel as shown in Fig. D2.
Chapter 4
COMPUTER ARITHMETIC
The computer performs all of its arithmetic operations in its arith
metic unit. This unit is the central or focal point of the computer, for all
calculations and processing are carried out in it. The arithmetic unit of
a computer generally consists of several storage devices called registers,
plus circuits that perform addition and subtraction. The basic register
in the arithmetic unit is called the accumulator since the results of almost
all computer operations "accumulate" in this register. The number and
size of the registers and other circuits in the arithmetic unit are depen
dent on the complexity and versatility of the overall computer and its
primary function. In this chapter, computer arithmetic will be discussed
and a basic arithmetic unit described and constructed for use in our
computer.
BINARY ARITHMETIC
In Chapter 2, we learned about the binary number system, which
is the system used by computers. The relationship between binary and
decimal numbers (and vice versa) was discussed and units that per
formed decimaltobinary and binarytodecimal number conversions
were constructed. These units allow raw rata to be inserted into our
computer in decimal numbers and processed data to be returned in
decimal numbers. However, internally, the computer performs all of its
operations using binary numbers. In the following paragraphs, the basic
rules of binary addition and subtraction will be described. Then, using
these rules, we will construct an arithmetic unit capable of performing
operations of addition and subtraction automatically. The arithmetic
operations of multiplication and division (which we will be able to do
on our computer) will be accomplished by performing multiple addi
tions or subtractions in sequence under control of a stored program.
These operations are discussed in Chapter 7.
BASIC RULES
As with any numbering system, there are a certain number of
simple, basic rules in the binary system on which the more complicated
arithmetic operations rest. These rules are the basic rules of single
column addition, subtraction, multiplication, and division. Since the
65
66
How to Build a Working Digital Computer
binary system contains only two numerals, the rules for this system are
both simple and few. These rules are contained in the following tables.
TABLE 41. BINARY RULES OF ADDITION
ADDEND
AUGEND
SUM
CARRY TO NEXT COLUMN
+
=
+
1
=
1
1 +
=
1
1 +
1
=
1
TABLE 42. BINARY RULES OF SUBTRACTION
BORROW FROM
MINUEND
SUBTRAHEND
DIFFERENCE
NEXT COLUMN
1
1
1
1
1
1
1
TABLE 43. BINARY RULES OF MULTIPLICATION
MULTIPLICAND
MULTIPLIER
PRODUCT
X
=
X
1
=
1
X
=
1
X
1
=
1
TABLE 44. BINARY RULES OF DIVISION
DIVIDEND
DIVISOR
QUOTIENT
4
=
Undefined
T
1
=
1
*
=
Undefined
1
*
1
=
1
These basic rules define the binary arithmetic functions for single
column operations. However, since we hardly require the assistance of
Computer Arithmetic
67
a computer for numbers of singlecolumn magnitude, let us proceed to
discuss and analyze the arithmetic functions as applied to higherorder
numbers. This chapter concerns itself with this analysis and with reducing
our findings to a series of logical statements that can be readily con
verted, using basic logic circuits (see Chapter 3), into a device to be
used in our computer as the arithmetic unit.
ADDING BINARY NUMBERS
The addition of higherorder binary numbers using the basic rules
tabulated earlier can best be illustrated by an example, as follows:
Decimal Binary
1 1 1 Carry
nrn
Augend
Addend
Sum
210
+135
110 10 10
+010000111
345
10 10 110 1
The process of addition illustrated in the foregoing examples con
sists of adding each column in sequence starting from the leastsignificant
column (righthand) and working towards the mostsignificant column.
Note that, in accordance with our rules for addition, when the addend
and augend are both 1, a 1 is carried to the next column. The algebra
of addition for a single column of binary numbers is expressed as follows:
Sum — Augend f Addend + Carry (from the previous column)
We can now analyze this process logically by means of a truth table
(Table 45) which uses binary 1 to represent True and binary to
represent False.
TABLE 45. ADDITION TRUTH TABLE
CARRY
AUGEND
ADDEND
(Previous column)
SUM
CARRY
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
68 How to Build a Working Digital Computer
From this table we can gather the compound statements for Sum = 1
and Carry = 1 and write the following statements, which cover the addi
tion of a single column of binary numbers:
S = (A u • Aa ■ C po ) + (A„ • Aa • C pc ) + (A. • A, ■ C^)
+ (A u • A„ • Cpc) (1)
C = (A u ■ A a • C P d+ (A„ • A d • C^) + (A„ • A„ • C^)
+ (A u • A d • Cpe) (2)
where: S = Sum
A u = Augend
Ad = Addend
Cpc = Carry (previous column)
C = Carry
At this point, let us refresh our understanding of Boolean algebra
by referring back to Chapter 3. Using the basic rules of Boolean algebra
and logic, we can rewrite statements (1) and (2) so that they contain
fewer component simple statements, thereby reducing the number of
switches necessary for their instrumentation. For the summation state
ment:
1. Process: Group the terms containing Cpc_and factor Cpc.
Result: S = Cpc J(Au_ Ad) +_(A U • Ad)]
+ (Au • Ad • Cpc) + (Au _Aa • Cpc) _
2. Process: Group the terms containing Cpc and factor Cpc.
Result: S = C pc • [(Auj_Ad) +JAu Ad)]
+ Cpc • [(Au • Ad) + (A u • Ad)] (3)
By counting terms it can be seen that the number of statements com
prising the summation statement has been reduced from 12 to 10.
Now let us minimize the logical statement for "carry" (2).
1. Process: Groupjhe terms containing (A u _^ Ad) and factor (Au • Ad).
Result: (C pc • A„ • A&) + (Cpc • A u • Ad) + (Au • Ad) (C pc + C pc )
2. Process: Since (C pc + C pc ) — 1.
Result: (C pc ■ Au • Ad) + (Cpc • A u • Ad) + (Au • Ad)
3. Process: Group_the terms containing C pc and factor C pc .
Result: C pc [(A u • A d ) + (A u • Ad)] + (Au • A d ) (4)
In this case, we have reduced the number of terms from 12 to 7.
At this point, logical statements have been derived for S and C
that, together, cover the entire process of addition for a single column
of binary numbers. However, prior to mechanization qf_ these statements
to form an adder, we must also derive the statement C since this state
ment is used for summation. To derive C, we again refer to the truth
table forjddition and gather the compound statements corresponding to
C = 0(C = 1).
Computer Arithmetic 69
C = (A„ ^Aa l.Cpel+ (A„ • Aa ■ C P e) + (A u • A d ■ C pc )
+ (A u • Ai • C P e) (5)
The "notcarry" statement, (5), is minimized by the following process:
1. Process: Group_the terms containing Cpc_and factor C pc . __
Result: (Cpc ■ An • Ad) + Cpc [(A u • Ad) + (Au ■ Ad) + (Au • Ad)]
2. Process: In the C_ pc term, factor Au. __ _
Result: (C pc • Au • A d ) + Cpc [A u (A d + Ad) + (A u • Ad)]
3. Process: Since Ad + Ad = 1;_ __ _
Result: (C pc • A u • Ad) + C pc [Au + (A u • Ad)]
4. Process: Referring to Cpc terms, if Au = 1, term in brackets equals Ad;
if A u = 0, thenJAu + (Au^_Ad) ]_== AV
Result: (Cpc • Au • Ad) + C pc [(Au + Ad)] (6)
Since statements (4), (5), and (6) apply to the addition of a single
column, it is necessary to use a complete set of these three statements
for each column of the numbers to be added.
For example, if we have a fourcolumn number_ (i.e., 0101), we
must mechanize each set of three statements (S, C, C) four times. For
example:
First column (least significant)
Second column
Third column
Fourth column
The answer to an addition problem involving two fourdigit numbers
thus consists of four individual summations, S through S 3 , arranged in
the following order:
S3 S2 Si So
The circuit used to mechanize each set of three statements corre
sponding to a single column is called a stage. In the above case, four
stages are required to mechanize the number completely. The design
of each stage is identical since it must mechanize the same logical state
ments. However, it is possible to simplify the mechanization of the first
stage since there are no C pc statements involved. The general statements
for a stage are:
S = Cpc^ [(A u • Ai}_+ (A uI Ad)]
+ Cpc • [(A u • Ad) +_(A B • Ai)]
C = (A„ • Ad) 4Cpc • [_(Aa_: A„)J (A d • A u )]
C = (Cp„ • Au • A d ) + Cp C (A u + Ai)
If we substitute a for C pc in every case:
S = (A„ ■ A d ) + (A u • Ai) (C pc = 0; therefore C pc = 1)
C=(A U Ad)
C = A„ + Aa
So
Co
Co
Si
Ci
Ci
S2
C2
C2
S3
C 3
Cs
70
How to Build a Working Digital Computer
Note: We previously defined binary 1 as being the equivalent of True and binary
as being equivalent to False. Therefore • N = and 1 • N = N.
Prove the statement derived for C by using the statement C and
De Morgan's Theorem.
To summarize:
First Stage
S=(Au Ad) + (At, ■ Ad)
C =_(A U • A d )
C = A U + Ad
Remaining Stages __ _ _
S = C P c • [(A u  A d ) + (Au • Ad)] + Cpc _[(Au • Ad) + (A u • Ad)]
C= (A u • Ad) +_C P c ■ UAd • Au) +_(Ad • Au)]
C= (Cpc • Au • A d ) + Cpc ■ [Au + A d ]
STAGE 2°
STAGE 2
TO NEXT
** DELETE C z n
CIRCUIT IN STAGE 2 3
I ^
ADDITION TO STAGE 2 3 FOR CARRY
S2 4
i©
Fig. 41. The circuits of a fourcolumn binary adder.
Computer Arithmetic 71
There is one remaining consideration; the possibility of an (n + 1)
digit sum resulting from the addition of two ndigit numbers. However,
in this case, the (n + 1 ) digit is merely the carry from the n th column.
Keeping this in mind, let us refer back to Chapter 3 for the discussion of
basic circuits and then compare the circuits illustrated in Fig. 41 for a
fourcolumn binary adder with the statements summarized above. These
circuits implement the statements for addition and hence provide an
automatic means for adding any two fourdigit numbers accurately and
instantaneously.
At this point, it is not necessary to build this adder since a com
plete arithmetic unit will be devised and constructed, using these state
ments, later in the chapter. However, at this point, we can appreciate
a basic advantage of the computer as a practical device. Note that the
design of the adder just discussed prevents it from making an error
(unless a malfunction develops). Over and over again, this adder will
unerringly calculate the sum of two fourdigit numbers at great speed
without feeling fatigue and without losing efficiency. Even at the rela
tively slow speed of our adder due to the use of mechanical switching,
the calculations are performed many times faster than the best human
calculator. If we consider the electronic switching speeds of modern com
puters, which are of the order of billionths of a second, the magnitude
of the computer's capability becomes apparent.
SUBTRACTION
The process of subtraction can be illustrated by the following
example:
Decimal Binary
210  — Minuend 110 10 10
—135  — Subtrahend » 10 111
uuuu
11 . — Borrow 1111 Borrow
075 10 10 1 f
The borrow term is thought of and used in several different ways, each
equally valid. Some people speak of borrowing a 1 from the minuend
digit of the next most significant column by adding 10 (in the case of
decimal numbers) to the minuend digit of the column being processed
and subtracting 1 from the minuend digit of column borrowed from.
For our purposes, however, we will adapt the method consisting of
borrowing 10 from the next most significant column by adding 10 to the
minuend digit of the column being processed and adding 1 to the subtra
hend digit of the column borrowed from.
As in addition, the process of subtraction consists of subtracting
each column in sequence, starting from the least significant column
(righthand) and working towards the most significant column. The
72
How to Build a Working Digital Computer
algebra of subtraction for a single column of binary numbers is expressed
as follows:
Difference = Minuend — [Subtrahend + Borrow (previous column)]
D = M  [S + Bpo]
We can logically analyze this process as before, using a truth table (Table
46).
TABLE 46. SUBTRACTION TRUTH TABLE
MINUEND
SUBTRAHEND
BORROW (pc)
DIFFERENCE
BORROW
1
1
I
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
From this truth table we can write the following logical statements
covering the subtraction of a single column of binary numbers:
D=(M_SBpc)_+(M
+ (M • S • Bp,)
B = (M 1 _SB PC 2+(M
MMSBpe)
B = (M _S ■ JB pc Ji + (M •
+ (M • S • Bp,) (9)
Using the same methods employed earlier for addition, statements
(7), (8), and (9) may be reduced to their minimum form.
Bp C ) + (M
S
Bpe)
(7)
B PC ) + (M
s
Bpc)
(8)
Bpe) + (M
s
Bpe)
D = B pcJ [(MS)^(M_S)]
4Bpe [(MS) + (MS)]
B = (B,c • M • S) + Bpe • (M + S)
B = (B pc MS)+Bp e  (M + S)
(10)
(11)
(12)
These are the general statements used in the design of the stages of a
subtracter. However, as for addition, the first stage may be simplified
Computer Arithmetic
73
since there can be no borrow (from a previous column). Therefore,
setting Bpo equal to 0, the first stage statements are:
D = (M • S) + (M • S)
B = M • S_
B =M + S
Should the subtrahend exceed the minuend, the last stage of the sub
tractor will generate a borrow. This borrow must be displayed as a
negative sign since it will occur only when the difference is a negative
number, in which case, the number:
D „D n i . ■ ■ DaDo
is in complemented form. Complementary numbers are discussed in the
STAGE 2°  M
TO
FROM
PREVIOUS <J
STAGE
2" 0^3
.STAGES 2'2 3  2 " M
2 n S
1° *
3 I
o A
2 n M
2"S
1 cs ~r c T~T J T~»T
2"M \2"S
~~4"M 2"S
ADDITION TO STAGE 2 3 FOR
FROM _M
STAGE 2' 3
Mr,
Bz"*
^, TO NEXT
STAGE
* SEE Dj« LAMP
ADDITION FOR STAGE 2 3
ONLY
*]? b TO NEXT
STAGE
** DELETE Bjn CIRCUIT
IN STAGE 2 3
^;
Fig. 42. The circuits of a binary subtracter.
74 How to Build a Working Digital Computer
next section. For the present let us confine our study to those cases that
produce positive differences and limit our study of negative differences
to recognizing the sign in the (m + I) 11 ' digit.
Figure 42 illustrates the circuit required to instrument the state
ments for subtraction. The subtractor illustrated will subtract any two
fourdigit numbers and display the difference (in complemented form
for negative differences). Again, it is not necessary to build the sub
tractor since our arithmetic unit will be capable of both addition and
subtraction and will be based on the logical statements derived in this
chapter.
COMPLEMENTARY NUMBERS
Complementary numbers are those numbers that, when added to
the number being complemented, result in zero (neglecting the (n + 1 ) th
digit). For example, in the decimal numbering system, the complement
of 3579 is 6421:
3579
+6421
10000
In the binary numbering system, the complement of 0101 is 1011:
0101
+ 1011
10000
In this manner, one can consider the complement as being the equivalent
negative number :
0101 5
+ 1011 + (5)
10000 ~
To obtain a complemented number, subtract the number to be
complemented from 2 N , where N is the number of digits in the number.
For example, if we wish to obtain the complement of 0110, the number
of digits is 4 and, hence, 2* equals (10000) 2 . Subtracting 0110 from
10000:
10000
 0110
1010
Therefore, 1010 is the complement of 0110 ((0110) 2 = (6) 10 and
(1010) 2 = (—6)10). The following additional examples illustrate the
process for complementing a number, x.
2 s 10000 10000 10000 10000
0001 1001 0111 0100
1111 0111 1001 1100
Computer Arithmetic 75
A "shortcut" method of obtaining a complement of a number is
as follows:
1. Reverse all digits in the number to be complemented; i.e., all
O's become l's and all l's become O's. For example, 0111 be
comes 1000.
2. Add a 1 to the least significant digit of the reversed number:
1000+1 = 1001.
The result is the complement number.
To illustrate the equivalence of this method, the examples below
are the same numbers complemented by the method in the earlier
examples:
0001 1001 0111 0100
Reverse
Add 1
(x)
1110 0110 1000 1011
+ ! + i + i + i
mi oin looi noo
In many digital computers, complementary numbers are used to
represent negative numbers. If threedigit numbers are required to
solve the problems for which a computer is designed, a fourth digit is
added to be used as a sign digit. For example, if the magnitude of a
number is 3 (011) the number is represented as 0011 with the in the
most significant column representing a positive sign. The number —3 is
then represented by the complement 1101 with the 1 in the most
significant column representing the negative sign.
The significance of this method will become clearer after the arithmetic
unit is constructed and various mathematical operations involving nega
tive numbers are performed on it.
MULTIPLICATION AND DIVISION
Multiplication and division of binary numbers are performed by a
programmed series of additions and/or subtractions. Since we perform
multiplication and division as programming exercises in Chapter 7, these
processes are not discussed here.
ARITHMETIC UNIT
Now that we have discussed and analyzed the logic of binary
arithmetic, it is necessary to design the unit that performs the actual
computation, the arithmetic unit. First, of course, let's state what our
arithmetic unit must be capable of doing.
The arithmetic unit must be capable of performing addition or
subtraction of two numbers stored within its own registers and of storing
76
How to Build a Working Digital Computer
the result in its own registers. Inputs to the arithmetic unit will be 4bit
numbers.
The basic functional units required for an arithmetic unit usually
are:
Add/Subtract Circuit
Accumulator
XRegister
Extension Register
In addition, we require a display for indicating the contents of the
accumulator and extension register. Figure 43 illustrates the resulting
functional configuration of the arithmetic unit.
DISPLAY SIGNAL
SPJ h _J fa I 1
I * ADD/SUBTRACT ■ ** I I
1 » XREGISTER I L^^^^J I^^^^J
^■^■■H INDICATES VIA OPERATOR
Fig. 43. A block diagram of the arithmetic unit.
The accumulator is the basic register of the computer and consists
of four stages (one stage for each digit of the 4digit number) plus a
sign or carry stage for a total of five stages. In addition, an extension
register of four additional stages is provided to allow for larger numbers
obtained when performing multiplication. The contents of all nine
register stages will be displayed automatically when a DISPLAY signal
is fed to the registers. In addition to accumulating the results of computer
operations, the accumulator is used to store the augend or the minuend
prior to an addition or subtraction operation, respectively.
A second register, called the Xregister, is also provided in the
arithmetic unit. This register is used basically to store the addend or sub
trahend just prior to an addition or subtraction operation, respectively.
Data may be transferred from the accumulator to the Xregister, if
required. The Xregister is a fourstage register.
The add/subtract circuit is capable of adding the 4digit numbers
in the accumulator and Xregister together and displaying the result on
Computer Arithmetic 77
the accumulator display. The result is then entered back into the
accumulator. The add/subtract circuit can also subtract the contents of
the Xregister from the contents of the accumulator and display the
difference on the accumulator display. In this case, also, the result is
entered into the accumulator. With this general outline of the arithmetic
unit, let us proceed with the logical analysis required for the design.
Earlier in this chapter, equations were derived for addition and
subtraction.
These equations are:
For addition:
1st stage —
S = (A u • A d ) + ( A u • Ad)
C = Au • Ad
C = A U + Ad
2nd through 4th stages —
S=Cpc_. [(Au • A d )_+ (Au^Ad)]
+ C P c • [(A u • Ad) +_(Au Ad)] _
C= (A u • Ad) +_C P c • _[(A d • Au) +_(A d • Au)]
C = (C P c • Au • Ad) + C P c • [ A u + Adl
S = C
PC
5th stage —
For subtraction:
1st stage — _
D=(M • S) + (M • S)
B = M • S_
B = M + S
2nd through 4th stages —
D = B pc _j [(M • S)_+ (M.S)]
^Bpc ;_[M .SJKMJ)]
B = (Bp C  M • S) + Bpc • (M + S)
B = (Bpc • M • S) + B pc • (M + S)
5th stage—
D = B P c
If we examine the above equations for addition and subtraction for
the first stage, and we let A = A u = M and X = A d = S (i.e., we let the
statement for the augend in addition equal the statement for the minuend
in subtraction, thereby allowing the augend and the minuend to be stored
on the same set of switches with a separate device being used to dis
tinguish between addition and subtraction), we can see the following
similarities: _
S= (A X) + (A X)
D= (A X) + (A X)
Thus, for the first stage, we see that addition and subtraction produce
the same results if the augend is set equal to the minuend and the
addend is set equal to the subtrahend. The following examples illustrate
this point:
78
How to Build a Working Digital Computer
1
1 1
1
+ o
1
0+1
1 0*
— 1
+ 1
1
1+0
1*

If we set S = D = T, for the first stage:
T=(AX) + (AX)
is the required equation for both addition and subtraction.
The carry and borrow equations for the first stage are:
C=AX U=A+X
B=AX B=A+X
Since there are no similarities here, it is necessary to write these equa
tions in complete form, setting C = B and adding the statements ADD
and SUB:
C = ADD • (A • X) + SUB ■ (A • X^_
C = ADD • (A + X) + SUB • (A + X)
Thus, the first stage equations can be mechanized by the circuit illus
trated in Fig. 44. Notice that wafer D has been added to the display
switch so that the content of switch A (accumulator) can be displayed
on order from the control unit. This switch wafer allows the value of A
DISPLAY
DISPLAY  SWITCH
BUS "
B+
2 D 3
DISPLAY
SWITCH
L2°
I OTIIMl —.1
I 3  'XJv TO NEXT
ADTJ^T^ 2 B Ti STAGE
2? '
^—LJsUBI .
1 ' <V 
° ^*ST»CF
3 E 2
Fig. 44. The first stage of the arithmetic unit.
* Neglecting borrow or carry.
Computer Arithmetic
79
from wafer A of the A switch to be displayed through wafer A of the
display switch on the 2° lamp when the DISPLAY order arrives from the
control unit.
Examining the second through fourth stages in the same manner,
one sees for the sum and difference:
T = C pc • [(A • X) + (A  X)] + C pc • [(A • X) + (A • X)]
For the carry and borrow:
C = ADD • [(A • X) + Cpc • [(A _X) + (A • X)]] +
SUB • [(A • X) +C PC • [(A • X) + (A • X)]]
C = ADD ■ [(A X) +J^7 [(A • X) + (A _X)]] +
SUB • [(A • X) + C pc • [ (A • X) + (A • X) ]]
These equations can be instrumented in the same manner as before,
using the circuit of Fig. 45. Notice that the display signal is again
passed to the next stage through the same wafer as C. In the fourth
stage, however, it is not necessary to mechanize the C term. The C term
DISPLAY
USWITCH
L2 n
NOTE: III 4TH STAGE, QUIT
5 CIRCUIT COMPLETELY
Fig. 45. The second through fourth stages of the arithmetic unit.
80
How to Build a Working Digital Computer
from the fourth stage is fed to the fifth stage as illustrated in Fig. 46.
Now, the add/subtract portion of our arithmetic unit is complete
along with the Xregister and four stages of the accumulator. Since
it is necessary also to store a 2 4 bit due to an addition or subtraction,
the fifth stage of the arithmetic unit must be equipped with a switch as
illustrated in Fig. 46.
DISPLAY A
BUS _
1°
Cpc
DISPLAY
°j li SWITCH
Fig. 46.
J^
AOD/SUB
The fifth stage of the arithmetic unit.
Now, the add/subtract and display switches on our arithmetic unit
must be operated manually. When the control unit provides a visual indi
cation to add or subtract the o n erator must throw the display switch to
the ADD/SUB position and then the ADDSUB switch to the appro
priate position. At all other times, the switch must be kept in the
DISPLAY position.
At this point we have accounted for the add/subtract circuit,
accumulator, accumulator display, and Xregister of our arithmetic
unit. It is necessary now to construct an extension register whose func
tion is to handle the leastsignificant portion of numbers greater than
four bits. This condition will arise due to the multiplication of two 4bit
numbers. The extension register and display need only comprise four
independent switches wired to a lamp display as indicated in Fig. 47.
Wire and construct the arithmetic unit in accordance with the
instructions contained at the end of this chapter.
Remember that this unit now requires the following rules of inter
connection and operation in our overall computer scheme:
1. Upon visual instruction (to be provided by the control unit)
the operator must throw the add/subtract and display switches
to their appropriate position. Unless indicated otherwise by the
31.
&!_.
&L
DISPLAY BUS
B Fig. 47. The extension register.
Computer Arithmetic
81
control panel, the display switch is normally left in the DIS
PLAY position.
2. A display (ACC) wire from the control unit must be connected
to a display input bus in the arithmetic unit and must provide
Bj whenever it is required to display the accumulator's con
tents.
3. Entry of data to the extension register is a manual operation
to be directed visually by the control unit.
CONSTRUCTION DETAILS— ARITHMETIC UNIT
" ii "^MflH £<oQH »M SMK ^?Bsl • TTl t««?S£Sk«MaB»w»B> J
Fig. El.
Components: Chassis, switches, display circuit
Materials
1 3 ft. X 2 ft. X Vs in. composition board
2 VS X 1 1 X Vs in. composition board
4 Vi X 9 X V6 in. composition board
6 Vi X 7 X V6 in. composition board
6 % X 5 X ^ in. composition board
2 V4 X 3 x V6 in. composition board
1 4 ft. X 1 in. X 4 in. pine strip
1 6 ft. X 1 in. X 1 in. pine strip
39 DPDT switches
5 SPST switches
9 #48 or 41 lamps (2 v, .06 a)
150 ft. insulated hookup wire (20 gage)
144 Vz in. wood screws (no. 4)
23 94 in. machine screws (632)
29 nuts (632)
1 tin strip (large juice can or sheet)
82
How to Build a Working Digital Computer
Special tools:
Tin snips
Drill (1/16, 3/32, Va,¥a)
Chassis Construction
1. Mark the smooth side of the 3 X 2ft. composition board with rules
as shown in Fig. E2.
2. Cut the 4ft. 1 X 4in. pine into two 24 inch lengths. Rip each
length as shown in Fig. E3 to obtain four angle supports. Leave two
of these lengths at 24 inches and cut one of the others down to 22
inches. Discard the fourth length.
J£J
2"
r
r
2"
24 r f
2'
,.
n
W
HrK
£4V
Wf
~WY
"dpT
"dpT
npT r
opJ]dpJmJdp].dp[jdp[^
g]
i r \
h=b=b:
0HH0—
1/2'
«'6
DRILL
NOTE: SP ■ SINGLEPOLE DOUBLETHROW SWITCH POSITION
DP DOUBLEPOLE DOUBLETHROW SWITCH POSITION
Fig. E2.
Fig. E3.
USE 1X4 PINE
NOTE: DO THIS FOR TWO 24" PIECES.
3. Mark the edges and center of the 3 X 2ft. board as shown in Fig. E4.
Drill 3/32in. holes at each point marked.
4. Following Fig. E5, clamp the angle supports to the panel and use the
panel holes drilled in Step 3 as guides to drill holes into the support edges.
5. Attach the side and center supports ta the panel with Vz in. wood screws.
6. Attach the two 34in. 1 X 1in. strips to the front and rear of the
bottom panel using Viin. wood screws.
7. On the panel face, use a DPDT or SPDT switch, whichever is necessary,
as a guide to mark the location of switchsecuring holes at each switch
location. Be certain each switch will be positioned as indicated in
Fig. E9.
8. Start a drill hole at each mark made in Step 7 and drill through the
panel with a 3/32in. drill.
9. At each lamp position indicated in Fig. E2 start a drill hole and drill
through the panel with a %in. drill.
w
Computer Arithmetic
DRILL 3/k
2jM£ t
83
I5J4
i**"
Fig. E4.
T kJ»l^ F— •!« — F— H« — F— •+• — 6"— <*• — F— »M*
34" FRONT
SUPPORT
24' SIDE ANGLE
SUPPORT
34' REAR SUPPORT
22' CENTER ANGLE SUPPORT
PANEL
BOTTOM
DRILL W HOLE
Fig. E5.
RETURN WIRE
DISTANCE
MEASURED
3 / 4 " MACHINE
SCREW
LIP
MACHINE
SCREW
f f
3'
6  24"
y
J i
SIDE
ANGLE 
SUPPORT
MACHINE SCREW
SIGN
4" STRIP LAMP
(B)
PANEL
MACHINE SCREW
Fig. E6.
10. Test each of the holes drilled in Step 9 to see that the envelope of a
lamp will protrude approximately Vs inch above the panel face when
the lamp is placed in the hole. File or sand each hole for a snug bulb fit.
11. Attach all switches with Viin. wood screws.
12. Mark each switch next to each of its terminals. Start a drill hole and
drill through the panel at each of these points with a Vsin. drill.
84
How to Build a Working Digital Computer
Power Terminal Strip
1. Drill three Win. holes in the lowerright corner of the panel as indicated
in Fig. E9.
2. Place %in. machine screws in the holes drilled in Step 1 and attach
3 nuts to each screw from the bottom of the panel.
Display Circuit
Construct base terminal connectors for the 9 lamps as detailed in the
construction procedures for the encoder. Test each lamp.
Cut tin strips for the lamp bases, each % in. wide: one 4in. strip;
four 8in. strips. The 4in. strip is for the sign lamp, the 8in. strips
are for pairs of the remaining 8 lamps.
Buff the tin strips so they have good surface continuity.
Set the lamps in their holes with the terminal connectors pointed
towards the foot of the panel. Measure the distance from the panel to
the lamp contact.
Referring to Fig. E6, bend each tin strip as shown.
Drill a Vs in. hole in the center of each 8in. strip.
Drill a 3/32in. hole at each end of each 8in. strip.
Place the 8in. strips in position, one by one, drilling holes in the panel
using the center and end holes as guides.
Secure the 8in. strips in the center with %in. machine screws and two
nuts. Secure them at the ends with VSin. wood screws. Tighten the
%in. machine screw to ensure good contact between the strip and the
lamp.
Secure the 4in. strip as indicated in Fig. E6(b), following the procedure
detailed above.
Figure E7 shows the final placement of the strips and the RTN
wiring. Wire together the securing nuts of each tin strip as shown in
this figure.
1.
3.
4.
5.
6,
7.
8.
10.
11.
Wiring
Turn the panel over and mark the switches on the underside as shown in
Fig. E8.
Following the wiring lists given in Appendix B, connect the switch ter
minals and lamps, following the procedure outlined in the wiring section
of the decoder construction details. Check your wiring after every few
connections. When connecting wires to the lamps, crimp the lamp con
nectors around the wire.
BOTTOM VIEW OF PANEL
Fig. E7.
Computer Arithmetic
85
Fig. E8.
2
!S9i
1.J
2
ri
L J
1st!
L J
SIO
I I
I
— .1
A BC DE FG HI 3K LM N
I , i
2' — ii — 'i — 1 1 1 1 ii — ii i?
Sll .
I; 1 i 1 i 1 i 1 1
A BC DE FG H
■ • > ii ■■ i
2t — 1 1 — i i — i i >2
DISP
RTNi B+
I
L D .
A,
DJ
E;
I
A,
SI4 BJ
— D — i
E)
F— ■
GJ
H— '
J— '
"bJ L_ s _ 4 b1 L s bJ
r _ Cn rCi
'  ' ' <
LOJ l_DJ
r E , rEj
L.FJ UFJ
rG
L H
rGT
I I
l. h .j
rA,
L«bJ
rCT
LDJ
rEl
L.FJ
[X]
rCT
LDJ
rE,
> — F — >
rA,
LJ?KbI
rCn
LDJ
rE"""
LFJ
2
iSIi
Using Viin. strips and %in. machine screws and nuts, attach the com
mon switch bars to the switch handles. Chart A shows which switches
are to be connected in this fashion.
Connect the B+, Display, and RTN to the junction box.
Label the unit as shown in Fig. E9.
Arithmetic Unit Checkout Procedure"
1. Connect one IVivolt flashlight battery between the B+ and RTN ter
minals. Connect a second IVivolt flashlight battery between Display
and RTN.
2. Set all switches to and set the Function Selector to Display.
3. In order, set the 2 4 (Sign), 2 s , 2 2 , 2 1 , and 2° switches of the Accumulator
and the 2~\ 2~ 2 , 2~ s , and 2~ 4 switches of the Extension Register to 1.
Note that each associated lamp is lighted.
4. Set the Function Selector at Add/ Sub. All lamps should remain lighted
except the 2 4 (Sign) lamp.
5. Set the Add/ Sub switch at Sub.
6. In order, set the 2°, 2 1 , 2 2 , and 2 s switches of the XRegister at 1. Note
that the lamp corresponding to each switch goes out when the switch
is set to 1.
7. In order, set the 2 3 , 2 2 , 2 1 , and 2° switches of the Accumulator at 0.
Note that the lamp corresponding to each switch goes on when the
switch is set to 0, but goes out when the next switch is set to 0. Note
that the Sign lamp is on.
8. In order, set the 2 3 , 2 2 , 2 1 , and 2° switches of the XRegister to 0. Note
that the lamp corresponding to each switch lights when the switch is
* Note: This checkout procedure represents a reasonable check of the arithmetic
unit. However, it does not cover all possibilities for adding and subtracting binary
numbers. A complete check would consist of the addition of every possible com
bination of 4bit binary numbers and the subtraction of all such combinations.
This type of check is left to the reader should he wish to follow it out.
86
How to Build a Working Digital Computer
UUP
~r
O
o o
O
o o o o
2«
i 23 o
1 22 o i 2 'o
1 2 %
21 2 2 23 24
q:
SIGN
s
e ra
H
SI B S Si
1 EXTENSION REGISTER *
n
□ □
l.l
n
i
1 FUNCTION SELECTOR '
H
H 1X1
H
Sll
Aoop] nnn
subc 1 LJ LJ L_i
1 — AOO/SUB SWITCH >
n
□ n
n
i
□ □
XREG1STER
i
DISPLAY
Fig. E9.
9.
10.
11.
12.
set to and remains lighted when switching the next switch. Note that
after switch 2° is set, all lamps are extinguished.
Set the Add/ Sub switch to Add.
In order, set the 2°, 2 1 , 2 2 , and 2 3 switches of the XRegister to 1.
Note that the lamp corresponding to each switch is lighted.
In order, set the 2°, 2 1 , 2 2 , and 2 3 switches of the Accumulator to 1.
Note that after 2° is set, only the 2* lamp is lighted. After 2 1 is set, the
2 1 and 2 4 lamps are lighted. After 2 2 is set, the 2 1 , 2 2 , and 2 4 lamps are
lighted. After 2 3 is set, all lamps are lighted except 2 1 .
In order, set the 2 3 , 2 2 , 2 1 , and 2° switches of the XRegister to 0.
Note that after 2 3 is set, the 2 4 , 2 2 , and 2 1 lamps are lighted. After
2 2 is set, the 2* and 2 1 lamps are lighted. After 2 1 is set, only the 2 4
lamp is lighted. After 2° is set, all lamps are lighted except 2 4 .
Chapter 5
STORAGE DEVICES
One of the reasons why computers are called "electronic brains"
is their ability to store and "remember" instructions and data. Because
it has a memory, the computer is released from the common calculating
machine's dependence on human, external, stepbystep control. Once
it has received its instructions and the proper data, the computer can
work without interruption and take advantage of the high computational
speeds that have made it such an invaluable tool.
Memory units take several forms, according to their function, and
are found in all parts of the computer. Some are used continuously and
others are referred to only at specific moments during a calculation.
Because they receive and hold information, these memory units are also
called storage devices. A computer's computational ability is related
directly to the amount of information it can store, its storage capacity,
and the speed with which it can obtain information from these storage
devices.
There are four types of storage employed in presentday com
puters: the register store, the internal memory, the auxiliary internal
memory, and the external memory. The frequency of use of these units
is dependent on the ease with which data can be recovered from them.
Register stores are used continuously during computer operation.
Partial answers, digits being operated on, and actual calculations are
registered in these devices. Essentially, they are twoposition switches
that store 1 in one position and in the other. The doublethrow
switches used in our arithmetic unit represent this type of storage
device. Because information passes quickly through them they are con
sidered to be shortterm storage units.
The internal memory is the major storehouse in the computer.
It holds all of the information supplied by the programmer: both the
instructions to be followed, in sequence, and the data to be used. The
auxiliary memory store, also internal, is used to back up the internal
memory in the event that its storage capacity is not great enough for the
program and data being inserted. The magnetic drum form of this unit
is not as rapid a transmitter of material as the magnetic core form.
Although the speed differential is in millionths of a second, which may be
insignificant to us, this is quite meaningful in most computer operations.
The external memory store is physically outside the computer and
serves as a library of programs and less oftenused data, or as a second
auxiliary memory. Such storage devices as punched cards, perforated
87
88 How to Build a Working Digital Computer
tape, magnetic tape, and magnetic disks are used in external memory
units.
Our primary consideration in this chapter will be the internal
memory stores — the magnetic drum memory and the core memory —
as these are the two most common types of memory store used in com
puters today and are used in our computer.
BASIC CONCEPTS
The storage capacity sets a limit on the range of computer calcu
lations and the number of digits a computer can handle. This fixes the
number of bits the computer can process at any given moment. In each
computer this fixed number of bits is called the computer's word length.
(Computer word length can be variable, but for most computers it is
fixed.) For example, in a computer that uses 7bit words, the number
fO^V wonlfl cmnpar nc fOf)1 1001^0 flip rmm1v*i" fQ^~ wrrnlH annpdr
as (0001001) 2 , or the number (2) w would appear as (0000010) 2 .
When a computer is designed, its word length is set by determining
the largest number the computer will handle to achieve the required
accuracy. For example, if the computer must handle integers of the order
of magnitude 10 4 (10,000), the number of bits required is 14 (10 4 s= 2 13 )
plus a bit to indicate sign (+ or — ) for a total of 15 bits.
In some cases, the requirements for instruction word lengths
differ from those for data words (instruction words are described in the
following paragraphs). The instruction word length is determined by
the number of different instructions and addresses required by the design
as well as the overall design criteria. If, for example, there are 32 different
instructions (2 5 ) and 9,000 possible addresses (approximately 2 13 ), the
instruction word requires a minimum of 20 bits. The instruction word
may be less than the data word length; or it may be set equal to the
data word length, if possible, for convenience and ease of design.
COMPUTER WORDS
Basically, the computer uses two different word types. The first
type, a straight numerical or data word, is a binary number. The second
type is an instruction word.
The instruction word is that part of a program that causes the com
puter to perform a particular operation. It has two parts: the order and
the address. In Chapter 1 we learned that a computer has an instruction
repertoire that consists of such orders as Add, Subtract, etc. Each order
is represented in the instruction word by a binary code that the computer
is designed to recognize. Each order usually is directed to data stored
in a computer memory section. The data are designated by a numerical
Storage Devices 89
code indicating their location in the memory section. This code is called
an address.
The complete instruction word, therefore, breaks down as follows:
Order Address
Add A to B
Subtract A from B
Store A in B
Let us assign a word length of 16 bits to a computer with a 20 order
instruction repertoire and a 1500 word memory capacity. The instruc
tion word would have the format illustrated below:
2i5 2" 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2°
Order Address
The five mostsignificant bits contain the order code and the remaining
bits contain the address code.
Every storage device capable of storing a word is assigned an
address. Hence, if we have 1500 storage devices, the address code will
range from 00000000001 to 10111011100. Therefore, if the order
"Add A to" is represented by the code 01010, the instruction word
0101000110110010
means "add the contents of A to the contents of address 434." A series
of instruction words may be written to perform any operation by keeping
track of the addresses in which the pertinent data are stored.
THE CORE MEMORY
The core memory unit is composed of many small magnetic cores.
Each core is a doughnutshaped ring whose magnetic characteristics
are used to store bits. Hundreds of thousands of these cores are used
in the average computer core memory.
Bits are stored in a core by changing its magnetic state. The
magnetic state of the core is affected by magnetic lines of force or flux
in the core material. This flux polarizes the molecules in the material
and determines the direction of magnetization in the core. The direction
of magnetization can be reversed.
In the magnetic core this is accomplished by wires coiled around
the core — the input and sense windings. Electrical current passing
through the input coil will generate a magnetic field that affects the flux
in the core. If the generated field is strong enough it will reverse the
direction of magnetization in the core. By assigning one magnetic state
the value of 1 and the other the value of (Fig. 51), these cores can
be used as register stores and, in combination, internal memories. The
sense winding, when energized, will sense the state of the core and pass
90
How to Build a Working Digital Computer
STATE0
FLUXCLOCKWISE
STATE = I
FLUXCOUNTERCLOCKWISE
INPUT
WINDING
SENSE
WINDING
Fig. 51. Magnetic cores are used as
memory stores.
Fig. 52. The core is read into and
out of on sense windings.
on an electrical pulse indicating what it is. In this fashion the core can
Combinations of cores can store computer words. One computer
word in memory is wired as in Fig. 53. A signal that is strong enough
is introduced on the word line. If a core is in the state the input signal
will have no effect. If, however, it is in the 1 state, the input signal causes
it to change to the state. The resultant change in flux imparts a signal
to the sense line that is amplified and interpreted as a binary 1. When
no change occurs, the sense winding develops no signal and the core's
state is read as a binary 0.
WORD
LINE
®— ® ® © © ©
DIGIT SENSE LINES
Fig. 53. One computer word in memory.
The core memory capable of storing many complete computer
words is a series of planes stacked one above the other, as in Fig. 54.
Each plane has an assembly of cores that equals the number of words
in a stack of planes. The number of planes in a stack is generally equiv
alent to the number of bits in a word. Each plane is wired in such a way
that only one core is addressed at any particular time. The entire stack
is wired so that the same core location in each plane is addressed at any
particular time. In this fashion, one computer word can be read in or
out at one time.
The core memory of our computer has a capacity of five 4bit
words. It will use. therefore, the equivalent of 20 magnetic cores in
four planes of five cores. As we are eliminating the automatic feature
of the computer, memory switches will be used instead of magnetic cores.
This memory unit will store 20 bits (5 X 4 bits). Thus, each core may
be loaded with any 4bit word from 0000 to 1111. The contents of a
single address will be displayed upon order. Construction details are
given at the end of the chapter.
Storage Devices
91
Fig. 54. A core memory capable
of storing many words.
THE DRUM MEMORY
The drum memory is another storage device that alters the mag
netic state of a medium to record binary l's and O's. In this case, the
magnetized medium is a block of parallel strips or tracks that ring the
circumference of a cylinder or drum (Fig. 55). A magnetic head
similar to that used on a tape recorder reads data into the track as current
switches back and forth through its windings (Fig. 56). Each current
reversal alters the magnetic state of the head and the portion of the track
immediately beneath it. The direction of current passing through the
head coils affect the direction of magnetic flux.
When the magnetized portions of recorded track pass below
another magnetic head, the read head, the magnetic lines of flux create
a current in the head's windings. The direction of flow of the induced
current indicates whether a or 1 is recorded on that portion of the
track.
Each portion of the track that contains a bit is called a cell. All of
the cells in a line parallel to the memory drum's axis constitute a slot or
READ
HEADS'
Fig. 55. A memory drum.
WRITE
HEADS
92
How to Build a Working Digital Computer
SLOT
COIL WINDING
MAGNETIC HEAD
na+ir* hoaH "rooHc" r\r "u/ritoc nn" tho rirnrri trsclc.
sector. Often a slot will contain one computer word, so the number of
cells in it is equal to the number of bits in a word for that computer.
The drum storage capacity depends on its size and speed of rota
tion. Drum sizes vary from 15 to 400 tracks with a rotational speed
of from 120 rpm to 75,000 rpm. The number of bits per track inch
varies from 200 to 300 bits per inch. In these ranges, capacities run
from 25,000 to 15,000,000 bits.
The magnetic drum used in our computer has 29 tracks and will
store 65 computer words. Its rotational speed is controlled by the
computer operator. This drum reads out in parallel; i.e., the bits com
prising a computer word in each slot will read out simultaneously. Con
struction details for this unit follow those for the core memory at the
end of this chapter.
Storage Devices
CONSTRUCTION DETAILS— CORE MEMORY
93
l4 ^^.335S
j«Bl
Fig. Fl.
Components: Chassis, switches {paper clip), display circuit
Materials
Chassis:
1
3
6
8 X 6 X Vs in. composition board
3 A X ^ X VS in. supports (scrap wood)
Vi in. wood screws (no. 4)
Display Circuit (including paperclip, SPST switches) :
44 paper clips
42 Vi in. machine screws (632, roundhead)
42 nuts (632)
4 #48 or 41 lamps (2 v, .06 a)
1 6V4 X Vi in. tin strip (can or sheet)
3V4 ft. uninsulated hookup wire (20 gage)
6 ft. insulated hookup wire (20 gage)
Adhesive tape
Special tools:
Tin snips
Drill (3/16, H, 3/32)
94
How to Build a Working Digital Computer
1"
6" 1
T,
1
X
'
■i.* *
*
* + +
+ +
+
It
+ XSOCX r
+ T
+ +
+
l!(
+ +
+
+ i
8
* + +
+
3/;h
4
+ +
+
3 /6l 1
xxxx
+ +
+
+ +
+
xxxx
TTI +
+
; a
3/4* ,
i ''2
i .+ T +
1/2 *
+
+
JX.XKX 1
+ $ 1 k"
t
t
DRILL SIZE
x 3/ 32 "
+ Ve'
* 3 /8"
Chassis Construction
Fig. F2.
4.
Mark and start drill holes indicated in Fig. F2 on the 8x6% X Vs in.
board.
Drill holes through the board, following the key in Fig. F2. The %in.
holes will hold the display lamps. The Vfcin. holes will hold machine
screws that secure paperclip SPST switches. The 3/32in. holes will
hold the wood screws securing the chassis to its supports and the
contact wires for each row of switches.
Test each %in. hole with a lamp bulb and file,, if necessary, to fit bulb
snugly with approximately Vs in. to Va in. of the glass envelope pro
truding above the surface of the panel.
Attach the three chassis supports, holding them in position and drilling
through the 3/32 in. holes in the panel. Secure the supports with the
^in. wood screws.
Switches
1. These switches were first built for the truth evaluator (Chapter 3). Bend
20 paper clips as in C3(a). Bend the 20 other paper clips as in Fig.
C3(b).
2. Cut each paper clip for each configuration as indicated in Fig. C3.
The Viin. section will be crimped around a machine screw to secure
the switch parts on the panel in an upright position.
3* Secure the switch parts to the panel tnp with Viin. machine screws.
Put the switch arms in th© first vertical row on the left side of the
panel (lamp holes to the right) with the arms pointing toward the lamp
holes. Place the contacts so that the open loop is towards the top of the
panel. Alternate between arms and contacts as you move to the right.
As each switch part is secured with a Viin. machine screw, crimp the
paper clip around the screw and tighten it.
Storage Devices
95
Fig. F3.
4. When switches are in place, cut each arm so that it extends past the
contact about V& in.
5. Cut each contact so that it is about V2 in. long on the open loop.
6. Bend the switch arms to the outside of the contact (toward the top
of the panel) so that there is enough tension to spring the arm away
from contact when it is not locked in place. The make or break motion
is similar to the opening or closing of a safety pin.
Switch Wiring
1. When all switches are secure, turn board upside down with lamp holes
to the right. Connect each horizontal row of live contact screws with an
8in. length of uninsulated wire, as in Fig. F3. Loop the wire around
each contact screw and secure the loop with a nut, terminating the
run at the lamp hole opposite that row.
2. Cut the insulated wire into the following lengths: five 4in. lengths,
five W2m. lengths, five 3in. lengths, and five 2Viin. lengths. Strip
V4 in. of insulation from one end of each wire and Vz in. from the
other end.
3. With the board upside down, attach the IViva. lengths to each arm
screw on the bottom horizontal row as in (A) of Fig. F4. The end with
V* in. of insulation stripped from it is connected to the screw. Secure
this end with a nut. Thread the other end of each lead through the
bottommost 3/32in. hole, as shown in the figure.
4. Repeat Step 3 for the 3in., V/im., and 4in. leads, as shown in (B),
(C), and (D), respectively, of Fig. F4. Part (E) of the figure indicates
how each vertical row of arm screws should look with all wires in place.
5. Turn the board right side up. Pull the arm contact wires up through
the 3/32in. holes so that they are taut. Trim each set of four wires
evenly so they extend approximately V2 in. above the panel.
2£
y—
3'/;
Fig. F4.
8 +
RTN
00 00
po po/oolloo o
opo 00MD0 o
0\0 0U30 O
00 o
00 00 00
(A) (B) (G)
(E)
96
UNINSULATED 
WIRE
How to Build a Working Digital Computer
I s#. !LJ
r" 'H^
~^~^ C5 *s* ^^ ^^
ADHESIVE TAPE
Rg. F6.
Fig. F5.
6. Take four short pieces of uninsulated wire and loop one around each
set of four wires to secure them in place (Fig. F5).
7. Position the loose ends of wire approximately V% in. apart and bind
them with a thin strip of adhesive tape, as in Fig. F5.
8. Strip l'/2 in. of insulation from a 10in. length of insulated wire. Strip
l A in. of insulation from the other end of this wire.
9. Wrap V2 in. of exposed wire around one side of the curved end of a
paper clip, as shown in Fig. F6. Wrap the remaining exposed wire
around the entire end of the clip and secure it in place with adhesive
tape.
screw in the Vs in. hole at the top of the panel, to the right of the lamp
holes. Secure this screw underneath the panel with a nut. Label this
terminal B+.
Lamp Display
1. Fit each lamp with a paper clip base connection. (See Encoder Con
struction Details for procedure.) Check each bulb to see that it works
properly.
2. Fit bulbs into 3 /sin. holes with connector facing the switches.
3. Connect the uninsulated leads from the contact screws to the lamp at
the end of each horizontal row of switches. Crimp each lead securely
in the bend of the paper clip.
4. Bend the 6Vt X Vi in. tin strip as shown in Fig. F7 to secure it to the
panel's edge. Drill through the other end using the Vsin. hole in the
panel as a guide.
5. Secure the tin strip to the panel with a Vzin. machine screw, making
ZZi <Ci tl± £^_
Fig. F7.
Fig. F8.
2'
O
2*
O
21
O
2»
o o
RTNB+
W0fiD°
1 o
o
o
o
o
o
o
o o o o
WORDO
2 o
o
o
o
o
o
O O O
WORDO
3 o
o
o
o
o
o
O O
WORDO
1 o
o
o
o
o
o
o
o o a a
WORDO
5 o
o
OOOO
Storage Devices
97
Fig. F9.
sure that the lamp contacts are firm. Place a nut on each screw under
neath the panel. Label the terminal on the right side RTN.
6. Label the panel top as shown in Fig. F8.
Core Memory Operation
1. Close switch for a 1, open for a 0.
2. To read memory, use clip lead and simultaneously connect all four
exposed wires for address desired. See Fig. F9.
Core Memory Checkout Procedure
1. Connect a IVivolt flashlight battery between the B+ and RTN ter
minals.
2. Close all toggle switches.
3. Connect the switch for word 1 and check to see that each lamp lights.
4. Open the 2 3 toggle of word 1 and note that the 2 3 lamp is out.
5. Open the 2 2 toggle of word 1 and note that the 2 2 lamp is out.
6. Open the 2 1 toggle of word 1 and note that the 2 1 lamp is out.
7. Open the 2° toggle of word 1 and note that the 2° lamp is out.
8. Repeat Steps 3 through 7 for words 2 through 5.
CONSTRUCTION DETAILS— DRUM MEMORY
SKKBBBBBi
IBHf 1
Fig. Gl.
98
How to Build a Working Digital Computer
Components: Subbase and supports, drum, paperclip contacts, ease, aispiay
Materials
Subbase, supports, drum:
1 tin can (large juice size)
2 4 x 3 x x /a in. composition board
1 5 X 12 X V4 in. composition board
2 2 X 1W X W in. composition board
2 % X % X 9 wood blocks
1 12 in. dowel (% in. diameter)
8 Vi in. wood screws (no. 4)
2 Vi in. molly bolts
Paperclip contacts:
28 paper clips
2 1 X 3 x V* in. wood blocks
1 9 X Vi X V& in. composition board
1 9 X % X V6 in. composition board
8 Vi in. wood screws (no. 4)
10 ft. insulated hookup wire (20 gage)
adhesive tape (Vi in. wide)
wood glue
Base and display:
1 6 X 12 X Vs in. composition board
2Vi X lVi X Vs in. composition board
wood supports for lamp chassis (% X % X % )
tin strip (4 x % in.)
Vi in. machine screws (632)
nuts (632)
Vi in. wood screws (no. 4)
#48 or 41 lamps (2 v, .06 a)
1
4
i
28
56
6
2
Special tools:
Tin snips
Drill (1/16, 3/32, Vs, 1 /4, % )
Emery cioth or sandpaper
Subbase and Side Support Construction
1. Drill V4 in. holes through each side support as indicated in Fig. G3.
The 4 X 3 X %in. composition boards are the side supports.
OUNTER SUNK
Fig. G2.
Storage Devices
99
2. Notch the side supports as shown in Fig. G3.
3. Clamp one support to the left side of the 5 X 12 X '/iin. subbase and
drill through from the bottom of the subbase up into the side support
with a V6in. drill Vi in. in from the top and bottom edges of the sub
base. Countersink the drilled holes. Secure the support to the subbase
with Viin. wood screws. See Fig. G2.
4. Measure the length of the can to be used as the drum memory. Add 2
inches to this figure. The length obtained is the distance the second
support should be from the first.
5. Clamp the second support at the proper distance from the first, as
determined in Step 3. Drill through the subbase into the support, as in
Step 2, countersink the drilled holes, and secure the support to the
subbase with ^in. wood screws.
6. Stand the subbase on the % X % X 9in. wood blocks with the 9in.
length under both side supports, one to the rear of the subbase, the
other to the front.
7. Drill through the subbase into the wood blocks from the top about
Va in. inside the side supports. Countersink the drilled holes.
8. Attach the subbase to the wood blocks with four ^in. wood screws.
Memory Drum Construction
1. Remove the paper label, if any, from the can to be used as the drum.
Clean off any glue. If the can is painted, use sandpaper or emery cloth
to remove all paint from the surface.
2. Puncture or drill a 3 /sin. hole in the center of each end of the drum.
Note: It is important that these holes be exactly in the center, for, as
the drum revolves, a constant pressure must be exerted on the read
heads. Otherwise, it will be most difficult to adjust the head tension
properly. To find the centers of the ends, do the following:
(a) Notch the edge of the can slightly and sharply.
(b) Stretch a length of cord across the diameter of the can, holding
one end of the cord in the notch made in Step (a).
(c) Using the notch as a pivot, swing the string back and forth over
the opposite edge of the can and determine at which point on the
can the string is longest. Notch the edge of the can at that point.
(d) Using a straightedge, score a line across the can's end from one
notch to the other.
NOTCH OUT _
RADIUS l
OF DRUM
\
*
h'/4

X
T
V
DRILL '/, HOLE
A
1
1
> 4" •
2— 1
\ HOLE
O'/ 4 H0LE
DOWEL
MOLLY BOLT
(A)
(B)
Fig. G3.
Fig. G4.
100
HARK
How to Build a Working Digital Computer
^
Fig. G5.
X
MARK
Fig. G6.
1
3i
K
MARK
3.
(e) The center of the can is at the center of the line scored in Step (d).
Use an awl and dimple the center point before drilling.
Drill a %in. hole through the center of each of the two 2 X Wi X Vs
in. pieces of composition board. Drill the ends of these boards as shown
in Fig. G4(a).
Place the boards drilled in Step 3 on each end of the drum so that
their %in. holes are over the drum centerholes. Using the two other
holes in the boards as guides, drill through the ends of the drum.
Attach the boards drilled in Steps 3 and 4 to each end of the drum with
molly bolts (Fig. G4(b)).
Run the 12in. dowel (%in. diameter) through the drum so that the
projecting ends are of equal length. Use white glue to secure the dowel
to the pieces at each end of the drum.
Lay the projecting dowel ends on the side supports and mark the
dowels as in Fig. G5.
With sandpaper, trim the dowels between the marks made in Step 7
until they fit in the hole drilled in the supports.
With the drum in place, mark the subbase where the ends of the drum
are, as in Fig. G6.
Remove the drum from the supports.
Drum Contacts Construction
1. Straighten out 29 paper clips and cut each one so that it is approximately
AV2 in. long.
2. Bend each clip to the configuration shown in Fig. G7.
3. On the front edge of the subbase drill a row of 29 1/16in. holes to
the dimensions indicated in Fig. G8, centered within the drum end
marks.
4. Mark and drill 29 1/16in. holes on the 9 X % X Vsin. and the
9 X Vi X %in. composition boards. These holes should line up, from
end to end, with those drilled in the subbase in Step 3.
7.
9.
10.
Fig. G7
Fig. G8,
Fig. G9.
Storage Devices
101
SIDE SUPPORTS
t SUBBiSF
^l>
V
s
T*"'
fr
Q
1"
~T
IT?
e
k
1
T^
9.
WOOD BLOCKS
(SEE STEP 5)
10.
11.
Mark and drill the 1 X 3 X Viin. wood blocks as shown in Fig. G9.
Place these blocks inside each support, with their front ends extending
% in. beyond the front of the base. Using the drill holes in the blocks
as guides, drill 1/16in. holes in the base and secure the blocks with
V2m. wood screws.
Insert the paper clips in the holes in the 9 X %in. strip drilled in
Step 4. See Fig. G 10(a).
Along the top of the clips, place two strips of Viin. adhesive tape,
sticky side to sticky side, with the clips in between. See Fig. G10(b).
Cut 29 4in. lengths of hookup wire. Strip % in. of insulation from
one end of each wire and Vi in. of insulation from the other end of
each wire.
Wrap the ends with % in. of insulation stripped from them tightly
around the 1in. end Of each clip. See Fig. Gll(a).
Insert the clip end with the wire on it in the hole on the edge of the
subbase as in Fig. G 11(b). Smear a little white glue on the wire
when it is almost completely inserted to ensure a good fit. Caution:
Be sure the glue is only at the front. Do not smear the entire end. If
glue gets between the wire and paper clip, there will be no electrical
contact.
Feed each wire, in order, through the corresponding hole in the 9 Y. V2
in. strip. Attach the strip to the subbase by drilling 1/16in. holes
Fig. G10.
102
How to Build a Working Digital Computer
V^
GLUE HERE
(SEE CAUTION, STEP 10!
(A)
WIRE AND PAPER
CLIP IN SUB BASE
(B)
Fig. Gll.
DRUM
(TK CAW
93/4 III STRIP ALLOWS TO TO PUT
" TENSION ON PAPER CLIPS
.DIRECTION OF TENSION
SUPPORT BLOCK
THIS STRIP PREVENTS CLIPS
"FROM COMING OUT
WIRE LEAD
WOOD BLOCK
Fig. G12.
Storage Devices
103
Fig. G13.
51/4'
"T 3 *
"TIT
i"r [
* 8 41/4"
x x
M e3/8"
++ + + ++ + + + + K> +++ +++++ +++ + + + + + + +
SIZE CODE
x lf,g DIA
+ 3/ 3 j DIA
SUBBASE
3/4H 1^ MOUNTS
I/2 
T
^TERMINAL MOUNTS
through the strip and base at each end. Attach the strip to the sub
base with ^in. wood screws. This strip prevents the clips from pulling
out of the base.
Establishing Contact Tension
1. Replace the drum on the supports.
2. Push the 9 X %in. strip against the clips and line up each contact
point as best as possible. See Fig. G12.
3. Slide the strip toward the drum along the supporting block until suffi
cient tension is obtained on all contacts against the drum. Secure the
strip to the supporting blocks with x /iin. wood screws.
Base and Lamp Display Construction
1. The 7 X 12 X Va composition board is the base for this unit. Mark
and drill it as indicated in Fig. G13.
2. Place '/iin. machine screws from the bottom in each of the 3/32in.
holes drilled in the base in Step 1 and place two nuts on each screw.
Do not tighten the nuts.
3. Place the subbase on the base with the row of terminal screws in the
front. Using the 4 holes drilled at the sides of the base as guides, drill
4 holes into the subbase. Secure the base to the subbase with Viin.
wood screws.
(A)
C
_B
CD
}
SIDE SUPPORT
1 II 1
1— *T
L,
'/?
X
t
SUBBASE
/(TOP RIGHT
' SIDE)
Fig. G14.
SIZE COOE
x 3 / 3 J DIA
* 3 /jDIA
+ Via
(B)
104
How to Build a Working Digital Computer
TO POWER SOURCE
Fig. G15.
4. Connect the wires from the paper clips to the corresponding terminal
screws by tightening the wire under the bottom nut. Note that the ter
minals are slightly spread out. Therefore, start at one end first and
work across.
*>• a Hi. uuiip Kiia\jiay iui inia uiui iS kjli uiv aiu^ vi. lllK* ui uiu auuua». 41 lb
constructed as follows:
(a) Mark and drill the right end of the subbase as shown in Fig. G 14(a).
File the %in. holes to accommodate the lamps.
(b) Attach paperclip, base terminal connections to the lamp bases,
as was done for the encoder lamps and those in other units.
(c) Cut a 4in. long, % in. wide tin strip. Bore a Vs in. hole at one end.
(d) Place the lamps in their holes and attach the tin strip as in Fig.
G 14(b).
(e) Fasten supports (small wooden blocks) to the corners of the subbase
with Viin. wood screws as shown in Fig. G15, and wire the lamps
as shown.
6. Label the unit as shown in Fig. G12.
Final Operations
1. Using graph paper, lay out your program as indicated in Chapter 7.
2. Wrap three 2in. pieces of adhesive around the can and next to each
other. ± iace the program layout on top ojl the adhesive.
3. Using a singleedge razor blade or Xacto knife, cut out each square
marked with an X.
Chapter 6
COMPUTER CONTROL
We have constructed all of the necessary calculating units but we
do not yet have a functioning computer., In this chapter we will examine
and build the unit that unifies all of the computer elements that we have,
the control. Externally, the programmer directs the computer's sequence
of operations. The internal control, however, must come from the com
puter itself.
This internal computer regulation is executed by countless control
circuits that decode program instructions and generate electrical signals
telling the various computer sections what to do. These circuits function
as a central command post that prevents the computer from operating
in a haphazard fashion. Although the control circuits may be spread
throughout the computer, they can be understood more easily by treating
them as an isolated section. The control unit for our computer will be
isolated, too, to emphasize its operation.
THE COMPUTER UNITS— A REVIEW
A review of the function of the various completed computer units
will help us develop an understanding of the operations the control unit
directs. In the operating computer these units will act only upon com
mand of the control unit.
The Input Unit. The input unit reads data into the computer. Using
two 10position rotary switches, it accepts two 1 digit decimal numbers,
encodes each from decimal to binary, and provides an intermediate,
buffer storage of the encoded bits in its display (the input buffer display).
The Arithmetic Unit. Using mechanical switches as register stores,
our arithmetic unit adds or subtracts two 4bit binary numbers and
stores the results in its own register. This unit is composed of four basic
functional units: the add/subtract circuit, the accumulator, the Xreg
ister, and the extension register. Data in the arithmetic unit's accumulator
can be transferred to the Xregister or displayed for the benefit of the
computer operator.
The Storage Unit. Our computer uses two storage units: the core
memory and the drum memory. The core memory, a temporary storage
unit, stores five 4bit words and is capable of receiving or releasing
data. As the drum memory stores the computer program, the control
unit is given direct access to it. The drum holds 26bit instruction words.
105
106 How to Build a Working Digital Computer
The Outmit Unit. In our computer we are assuming that a program
automatically converts binary numbers to binarycoded decimal num
bers. Therefore, the output unit functions as a BCDtodecimal decoder
and displays the answers to the computer's calculations.
THE CONTROL UNIT
The control unit examines the program instructions and relays
them to the proper units at the proper time. In our computer the chain
of command will be altered somewhat because the operator works the
computer manually. For this reason, the control unit will display its
commands to the operator rather than send them directly to the unit
involved. The operator will function as the link between control and the
input, arithmetic, storage, and output units.
We have reviewed the functions of the various units to see the range
of operations the control unit directs. The various instructions the control
uses to initiate these operations are referred to as its instruction reper
toire. Our control unit's instruction repertoire is set up in relation to
each unit as follows.
The Input Unit. The input unit requires an instruction to read in
data. Therefore, our first order in the instruction repertoire will be
"Read in from the input buffer display (IBD) to accumulator." To
simplify the writing out of instructions we will use code names for each
one. For "Read in from IBD to accumulator" we will write RIN, a
shortened form of read in.
There are two possible inputs in this unit, A and B, each at a
different location, or address. Therefore, two addresses are required
along with the RIN instruction, Address A and Address B.
The Arithmetic Unit. The arithmetic unit obviously needs the
instructions Add and Subtract, the shorthand codes for which will be
ADD and SUB, respectively. The ADD instruction will cause the con
tents of the accumulator to be added to the contents of the Xregister.
The sum obtained win be inuicated automatically on me accumulator
display. The SUB order will cause the contents of the Xregister to be
subtracted from the contents of the accumulator. The difference ob
tained will be indicated automatically on the accumulator display.
Besides these two arithmetic instructions, other instructions are
necessary to manipulate data within the arithmetic unit. Instructions that
will allow us to multiply or divide easily by powers of 2 and use the
extension register are needed: "shift right" and "shift left." The notation
for these instructions will be SHR (shift right) and SHL (shift left).
When these instructions occur in the program, a signal must be sent
to the arithmetic unit so that the accumulator contents are displayed
to the operator. This "display accumulator contents" instruction will be
written as DISPLAY (ACC). The operator must also be given an
indication of the number of places to shift, so four addresses are
Computer Control
107
required along with the SHR or SHL: "1 place," "2 places," "3 places,"
and "4 places."
The instructions for the arithmetic unit are numerous because
of the many operations performed in arithmetic calculations. An instruc
tion is needed to indicate that the contents of the accumulator should be
transferred to the Xregister. This order, "transfer accumulator contents
to Xregister," or TRA, will also require the DISPLAY (ACC) address
so that the accumulator's contents will be displayed to the operator.
Thus far we have defined the need for the following instructions
and addresses:
Unit
Instruction
Address
Input <
RIN
ADD
SUB
Address A
Address B
Arithmetic
SHR
SHL
TRA
1 place
2 places
3 places
4 places
DISPLAY (ACC)
The Output Unit. In the output unit it is necessary to have an
instruction for data to be read out from the accumulator to output
display. The order, "read out accumulator to output" or RUT, also
requires the DISPLAY (ACC) address so the operator is shown the
accumulator contents. Since the RUT operation requires setting a BCD
word into two output unit registers, two addresses are required with the
instruction: 10° and 10 1 . Finally, the output unit is designed to display
results only upon receipt of an answer command, "display answer"
or ANS.
The Storage Units. No instructions are associated with the drum
unit as it is the source of the computer program and originates the
information that the control unit uses. There are special program steps
that affect the drum unit which will be considered later in this chapter.
Instructions for the core memory are needed to read data in and
out. To read data into the core memory, which can store five 4bit
words, we will use a store order, STO, with five addresses. As this
instruction requires transfer of the word indicated on the accumulator
display to the core address indicated by control, the DISPLAY (ACC)
address is also required.
To read data out of the core memory to the accumulator, the RIN
instruction is used with an Address C and the five core addresses. This
instruction will command the operator to determine the contents of the
indicated memory core and read them into the accumulator.
Program Instructions. The fundamentals of programming for our
108
How to Build a Working Digital Computer
computer are developed in the next chapter. However, it is necessary
to consider two program aspects here as they directly affect the instruc
tion repertoire of our control unit.
Often during a program, it is necessary to make a decision based
on the results of a certain computation or operation. The decision made
will determine whether the program continues along its regular sequence
of steps or "jumps" to a new subprogram or routine. The instruction
required to call for this decision is called "conditional jump" or COJ.
When a COJ instruction occurs, the operator checks the mostsignificant
bit (MSB) in the accumulator. If the MSB is the operator continues
to the next instruction. If the MSB is 1, the operator follows an alternate
program of instructions.
It is also necessary to jump sometimes from one place in a program
to another to avoid the repetition of subroutines. A "jump" instruction,
JUP, is used in this case.
THE COMPLETE INSTRUCTION REPERTOIRE
The complete list of instructions and addresses used by the control
unit is given in Table 61. As shown, there are 10 orders and 16 ad
dresses. Therefore, our computer word will require 26 bits as a minimum.
TABLE 61. THE INSTRUCTION REPERTOIRE
ORDERS
ADDRESSES
_ 1
RIN
Address A
ADD
Address B
SUB
Address C
SHR
Core 1
SHL
Core 2
TRA
Core 3
RUT
Core 4
STO
Core 5
COJ
1
JUP
2
3
4
DISPLAY (ACC)
10°
lfjl
ANS
Computer Control
109
ADDRESS
TIMING
Fig. 61. The instruction word format.
The format for our word is shown in Fig. 61. Bits 2 2 through 2 17 are
used for addressing and bits 2 18 through 2 27 are used for instructions.
Bits 2° and 2 1 are used for power and timing, as discussed in the chapter
on storage units.
The coding for the orders and addresses is shown in Tables
62 and 63.
The control unit in our computer is a panel of coded lamps that
displays instructions and addresses. The unit commands the operator
by interpreting program signals in terms of computer operations and
lighting the coded lamps to guide the operator in his manipulation of
the computer units. The construction procedures for this unit are given
at the end of the chapter.
The mechanical manipulation of the operational procedures indi
cated by the control unit will be detailed at the end of the chapter after
the unit is completed and the computer parts are wired together. Figure
62 shows what the completed computer should look like.
WIRING THE SYSTEM
The various units of the computer should be arranged on a table or
workspace. See Fig. 62. All intraunit wiring should be completed and
TABLE 62. THE ORDER CODE
ORDER
2 27
2 26
2 25
2 24
2 23
2 22
2 21
2 2 °
2 19
2 18
ADD
1
SUB
1
STO
1
SHR
1
SHL
1
TRA
1
JUP
1
COJ
1
RIN
1
RUT
1
110
How to Build a Working Digital Computer
lABLb 63. THE ADDRESS CODE
ADDRESS
17
2
16
2
2 15
2 14
2 13
_12
2
2 U
2
,.9
2
.8
.7
z
2 6
„5
2 4
„3
z
2 2
Core 1
1
Core 2
1
Core 3
1
Core 4
1
Core 5
1
1
1
n
2
1
3
1
4
1
Address A
1
Address B
1
Address C
1
10 1
1
10°
1
ANS
1
DISPLAY(ACC
:)0
1
checked out in accordance with the instructions for the individual units.
Once this is done, the power supply switch on the junction box is opened
and the following power wiring is accomplished.
TABLE 64
FROM
TO
UNIT
TERMINAL
UNIT
TERMINAL
Junction Box
B+ Bus
Arithmetic Unit
B+
Junction Box
B+ Bus
Drum Memory
B+
Junction Box
B+ Bus
Core Memory
B+
Junction Box
RTN
Input Unit (Encoder)
RTN
Junction Box
RTN
Arithmetic Unit
RTN
Junction Box
RTN
Drum Memory
RTN
Junction Box
RTN
Core Memory
RTN
Junction Box
RTN
Output Unit
(Decoder)
RTN
Junction Box
RTN
Control Unit
RTN
Computer Control
111
ARITHMETIC UNIT
DRUM
DECODER
DISPLAY
JUNCTION BOX
ENCODER
CORE
MEMORY
CONTROL PANEL
DECODER
SWITCHES
Fig. 62. The completed computer.
After the power wiring is installed, the following signal wiring should
be installed.
TABLE 65
FROM
TO
UNIT
TERMINAL
UNIT
TERMINAL
Junction Box
DISP
Drum Memory
DISP (2 2 )
Junction Box
DISP
Arithmetic J'nit
DISP
Junction Box
INP A
Drum Memory
INP A (2 8 )
Junction Box
INP A
Input Unit (Encoder)
A
Junction Box
INPB
Drum Memory
INPB (2 9 )
Junction Box
INPB
Input Unit
B
Junction Box
ANS
Drum Memory
ANS (2 3 )
Junction Box
ANS
Output Unit
(Decoder)
ANS
After completing this wiring, wire the drum memory and control units,
starting at the left side of the drum with the terminal marked ADD.
Wire all 26 order and address terminals.
CHECKOUT PROCEDURES
Periodically, and prior to operating the computer, each unit should
be tested individually according to the instructions presented for testing
in the various chapters of this book. In addition, the control panel
should be checked by using a test lead connected at one end to the Bf
terminal of the drum. The test lead should then be touched to each
read head, 2 2 through 2 27 , in turn and the following results obtained:
112
How to Build a Working Digital Computer
TABLE 66
READ HEAD
NORMAL INDICATION
2
2
Accumulator display indicates contents of accumu
lator
2 3
ANS lamp lights and output unit register contents
are displayed.
2 4
10 lamp lights
2 5
1(1 l Q mn liohtc
2 6
Input C lamp lights
2 7
IBD indicates Input B switch setting, Input B lamp
lights
2 8
IBD indicates Input A switch setting, Input A lamp
lights
2 9
4 lam n lights
2 10
3 lamp lights
2 11
2 lamp lights
2 12
1 lamp lights
2 13
Core 5 lamp lights
2 14
Core 4 lamp lights
2 15
Core 3 lamp lights
2 16
Core 2 lamp lights
2 17
Core 1 lamp lights
2 18
RUT lamp lights
2 19
RIN lamp lights
2 2 °
COJ lamp lights
2 21
JUP lamp lights
2 22
TRA lamp lights
2 23
SHL lamp lights
2 24
SHR lamp lights
2 25
STO lamp lights
2 26
SUB lamp lights
2 27
ADD lamp lights
If this test is successfully completed a program may be loaded
(see Chapter 7) and operation may begin.
Computer Control
OPERATING PROCEDURES
113
To operate the computer, the operator must become familiar with
the manual operations he must perform under direction of program
control. Remember, our computer does not have active components and
hence the human operator simulates many normally automatic functions.
It is suggested that a chart be made of the required operator's procedures
as prescribed in Table 67 and displayed conveniently near the computer
for ready reference.
The operator, after loading a program, sets the drum to its posi
tion and closes the power switch on the Junction Box. The operator then
advances the drum, one slot at a time, performing the required opera
tions as indicated by the control panel and the following table.
TABLE 67
LAMP
OPERATION
ADD
Place the DISPLAY switch in the ADDSUBTRACT posi
tion and the ADDSUBTRACT switch in the ADD position.
Register answer as displayed on accumulator display
into the accumulator. Set the DISPLAY switch back to
the DISPLAY position. Set Xregister to zero.
SUB
Place the DISPLAY switch in the ADDSUBTRACT posi
tion and the ADDSUBTRACT switch in the SUBTRACT
position. Register answer as displayed on the accumu
lator display into the accumulator. Set the DISPLAY
switch back to the DISPLAY position. Set Xregister to
zero.
STO
Transfer the word on the accumulator display to the core
address indicated.
SHR
Note the word on the accumulator display; reset the ac
cumulator switches (including Extension register) so
that the display word is shifted the indicated number of
digits to the right. For example, if the displayed word
is 00101 0000 and the core 2 lamp is lighted, the word is
shifted two places to the right as follows: 00001 0100.
SHL
Same as SHR except shift to the left.
TRA
Transfer the contents of the accumulator as displayed to
the Xregister by setting the Xregister switches.
JUP
Note whether the 1, 2, 3, or 4 lamp is lighted. If the 1,
2, or 3 lamp is lighted, rotate the drum forward until
the same lamp and JUP lamp light again. If the 4 lamp is
lighted, rotate the drum backwards until the 4 lamp and
JUP lamp light again. Perform the indicated order.
COJ
Same as for JUP, but perform only when accumulator
sign or 2 4 bit lamp indicates 1. Otherwise, proceed to
next instruction.
114
How to Build a Working Digital Computer
TABLE 67 (Cont.)
LAMP
OPERATION
RIN
If IBD display lights, set the accumulator switches to
reflect the contents of the IBD. If a core address lights,
throw display switch for that core address and then set
the contents of the core display in the accumulator.
RUT
Transfer the displayed accumulator contents into the in
dicated output buffer register lo", or 10 or read
the computer output if the ANS lamp lights.
CONSTRUCTION DETAILS— CONTROL PANEL
Components: Chassis (panel and support), display circuit, terminal board
Materials
Chassis:
1 12 X 8VS X Va in. composition board
1 5 X 8VS X V* in. composition board
4 Vi in. wood screws (no . 4)
ift i* MpP
mm
Fig. Hl.
Computer Control
115
Display circuit:
26 #48 or 41 lamps (2 v, .06 a)
7 tin strips, dimensions in construction details (can or sheet)
23 ft. insulated hookup wire (20 gage)
1 ft. uninsulated hookup wire (20 gage)
8 Vz in. machine screws (632)
14 1 in. machine screws (632)
30 nuts (632)
1 sheet of Wx x 1 1 in. blank paper
Adhesive tape
4 dozen 1 in. brads
Terminal board:
1 12 x 2V4 X V4 in. composition board
27 Vi in. machine screws
54 nuts (632)
4 Vi in. wood screws (no. 4)
Special tools:
Drill (%, Vs, 3/16, and 3/32)
Chassis Construction
1. Mark the 12 X SVi X % in. board as shown in Fig. H2 and start drill
holes.
2. Drill all holes through the panel, following Fig. H2 as a guide for
proper drill size. Smooth rough areas with sandpaper.
3. Rule the 5 X 8V4 X y A in. board as shown in Fig. H3 and saw through
board along ruled line. The resulting tapered pieces are the supports
for the control board panel.
4. Assemble the chassis by fastening the panel to its supports as follows:
* + * * +
Fig. H2.
+ * + * + ■* +
* + * + * + + •* + * * + —
* *+*+* # +
SIZE CODE
+ '/jDIA * 3 /j"0IA
I
I
"4"
116
How to Buiid a Working uigitai Computer
„ gl/ 2 pi
I
^asngs^
5"
T
I,
Fig. H3.
(a) Start four drill holes on the chassis panel, one in each corner, ap
proximately Vn in, from the outside edge and 2 in. from the top or
bottom edge.
(b) Hold the panel and supports together as shown in Fig. H4 with
the longest row of holes in the panel at the top. Drill 3/32in. holes
through the panel and support at the points where the drill holes of
Step 4(a) were started.
(c) Fasten the panel and supports together with Viin. wood screws.
Display Circuit Construction
A. Wiring
l.
2.
4.
Turn the control panel over (supports up) and place it on top of a
sheet of 8Vi X 11 in. paper. Line up the edges of the sheet with the
top and bottom edges of the panel.
With a pencil, trace the circumference of each %in. hole so that
a circle is made on the paper underneath. When each hole is marked
you will have a pattern that represents the position of the lamps on the
panel.
Remove the control panel and place the pattern on a flat working
surface that you can drive nails into. This pattern is the same type of
harness wiring guide that was used when harnesses were made for the
Decoder.
Along the top edge of the pattern, mark off %in. segments starting
PANEL
WOOD SCREW
SUPPORT Fig. H4.
Computer Control 117
REAR OF CONTROL PANEL
\
I 2 3 4 5 6 7 8 9 10 II 12 13 H 15 16 17 18 19 20 21 22 23 24 25 26
+++++++++++++++++++++++++++
NOTE:
8 9 10
II 19
25
18 5 6 7
OQoOO O
o
0666
4 3Q2
1 COJ
SUB
■ 1 B A
JUMP
23
26
22
o
o
o
SHR
ADD
SHL
2 3 4
17
24
21
666
6
o
o
ANS 10° 10 '
RUT
sfo
TRA
12 13
14 15
16
66000
5 4
3 2
1
\
INDICATES POINTS FOR BRADS
\
UNDERSIDE OF
TO BE ORIVEN AS HARNESS GUIDES.
CONTROL PANEL
Fig. H5.
3 A in. in from the side, as in Fig. H5. You should have 26 such marks
when finished. Number each mark, starting at the left with number 1.
These marks represent the terminal connections for each lamp. Label
and number each lamp hole as indicated in Fig. H5.
5. Drive 1in. brads into each mark at the top of the pattern. Place brads,
also, at the circled points indicated in Fig. H5. They should be driven
in only as far as is necessary to hold them securely.
6. The five wiring harnesses to be constructed on this pattern will run
between the lamp bases and terminal connections. Each harness, as
described in the following steps, should be laid out in the same fashion
as those made for the Decoder. Run wires through the guides. Use
adhesive tape strips at tie points, run longest wires first, etc.
Cut insulated wire to the lengths indicated in Chart A. Strip V2 in.
of insulation from each end of each wire and tag wires at each end with
identifying number indicated in the chart.
7. Harness 1: Connect terminals 2, 3, and 4 with holes 2, 3, and 4
as indicated in Fig. H6. (On all figures representing harnesses, X's
indicate wire guidenails and diagonal lines indicate tie points.)
8. Harness 2: Connect terminals 5, 6, and 7 to their correspoding holes
as shown in Fig. H7.
9. Harness 3: Connect terminals 8, 9, 10, 11, and 20 to their corresponding
holes as shown in Fig. H8.
10. Harness 4: Connect terminals 12, 13, 14, 15, and 16 to their correspond
ing holes as shown in Fig. H9.
11. Harness 5: Connect terminals 17, 18, 19, 21, 22, 23, 24, 25, and 26
to their corresponding holes as shown in Fig. H10.
118 How to Build a Working Digital Computer
I X X 5 e *
OOO n n n
7~ttt~ ~ Hfi 7~ —
2 3
(^ G^ <\_ Fig. H6.
8 9 10 II
J4U !
A A / ^ / * * '
<*L<^
20
^^
Fig. H8.
17 16 19 21 22 23 24 25 26
v.. U U U.vy Wv,' WU^,
"3\
\__i__i
\__i__i
<i^ d^ d>^
Fig. H7.
12 13 14 15 16
W I' \ J
U_l
*5A
12 13 14 15 16
Fig. H9.
Fig. H10.
B. Lamps and lamp connections
1. Prepare paper clips for lamp bases as was done for the Encoder lamps
and secure them to the 25 control panel lamps.
2. Test each lamp hole to be sure that each lamp protrudes approximately
Vs in. to Va in. above the panel face when inserted from the underside
of the panel. Adjust lamps to proper height by filing holes.
3. Cut Viin. wide tin strips in the following number and lengths: one 7in.
Computer Control 119
Chart A
Length
Order of
Length
Order of
Terminal
(in.)
Use
Terminal
(in.)
Use
2
7
1
15
IV2
16
3
8
2
16
W2
17
4
9
3
17
18
18
5
7
7
18
UV2
19
6
91/2
5
19
14
20
7
9Y2
6
20
5
11
8
AVa
8
21
13
21
9
AVa,
9
22
12
22
10
3V2
10
23
14
23
11
3»/8
12
24
14
24
12
11 Vi
13
25
10%
25
13
10%
14
26
11
26
14
9
15
Chart B
Strip
Lamps
Type
Designation
8,
,9,10,11,
19
1
A
25, 18, 5, 6,
7
3
B
20
5
C
23, 26, 22
2
D
2,3,4,17
1
E
24,21
4
F
12,
, 13, 14, 15.
,16
1
G
strip; four 6in. strips; one 5in. strip; one 3in. strip.
4. Punch and drill each strip as shown in Fig. Hll. Use a 3/16in. drill.
Drill three strips as Type 1.
5. Insert the lamps in the holes and attach the tin strips to the lamp tips
using Tin. machine screws and nuts. Chart B indicates which strip type
to use with each set of lamps. Figure H 12(a) details the manner in
which the strips are attached.
6. Depress ends of strips A, D, E, and G to panel and drill through panel
with a Vsm. bit, using end holes in strip as a guide. Angle the strip
so that it does not contact the lamp (see Fig. H 12(b)). Secure both
ends of strips D and G with Vim. machine screws and nuts. Secure
the left end of strip A with 1in. machine screws and the left end of
strip E with %in, machine screws and right ends of same strips with
1in. machine screws.
7. Connect adjoining ends of strips A and B with same machine screw.
Drill through panel and secure right end of strip B with a 1in. machine
screw.
8. Connect adjoining ends of strips E and F with same machine screws.
Depress right end of strip F, drill through panel, and secure with Viin.
machine screw.
120
How to Build a Working Digital Computer
»
*
— 2 3 'j
o
i'V—
~%
T
i."
K
TYPE 2
6"
*
N
O h
2
O
_,l? Ma —
■2"
4:
TYPE
»
3
s=
«V '
*
«u
o
i 3 '» — t~
2*1
4
\*
TYPE 4
6 5 /,"
•
n
• r
» Z
6
"
TYPE 5
•
k
° b
2'/ 2
O
Fig. Hll.
Fig. H12.
TIN STRIP
PANEL
MACHINE SCREW
LAMP PANEL
TIN STRIP
(A)
(B)
12'
L
T
* r
ZC
*— + + + + ++ + + + + ++■ + +
+ + + + + + + + + <
SIZE CODE
+ '/(" DIA
x 3 /,",DIA
BACK BOARD
Fig. H13.
9. With 3 short lengths of uninsulated wire, connect the machine screws
securing strips A and C, C and D, D and F, and F and G. Secure these
connections with a second nut.
Terminal Board Construction and Harness Installation
1. Starting 1 in. in from the end on the 12 X 2V£ in. board, mark off 26
points, % in. apart, along the center of the board, as shown in Fig. H13.
2. Start a drill hole at each point and then drill through the board with
the V6in. bit.
3. At each corner of the board, Va in. from the edge and Va in. from the
top or bottom, start a drill hole and drill through with the 3/ 32in. bit.
4. Insert a Viin. machine screw in each V6in. hole. Position the screw
with two nuts, as indicated in Fig. H14.
5. Lay the harnesses out on the underside of the panel, one by one. For
Computer Control
121
NUTNCt
Fig. H14.
NUT NO. 2
WIDTH OF NUT'
632 X '/2 
MACHINE SCREW
nm
\n/ BACK BOARD
REAR
each harness, connect the stripped ends to the lamp bases and crimp
for a secure connection.
Attach the free ends of the harness wires to the screws on the terminal
board at the back of the board. The wires should run in numerical
order from left to right. Secure each connection by tightening the nut.
There will be no wire for terminal 1 at the far left.
Secure the terminal board to the back of the control panel supports by
placing it Vi in. below the top of the board and drilling through the
holes on its edge into the supports. Fasten the board to the supports
with ^in. wood screws.
Attach a short, uninsulated wire to terminal 1 and the screw holding
the left end of strip A.
Label the panel and terminal board as shown in Fig. H15.
ooo o
A B C BIN
o
SUB
ooooo
COJ 1 2~J 4
o
SHL
o
ADD
SHR
JUMP
o
TRA
o
STO
o
RUT
OOO
10' K>' ANS
OOO oo
12 3 4 5
R A RRCJTSSSSA
T H o I CCCCCIMOURHHTUD
NSWI0CBA432 154321 THJPALROBD
OOOOOOOOOOOOOOOOOOOOOOOOOO
I 2 3 4 5 6 I 8 9 10 II 12 13 14 15 16 17 18 19 20 21 2223 24 25 26
Fig. H15.
122 How to Build a Working Digital Computer
CONSTRUCTION DETAILS— JUNCTION BOX
HSl : MHiPW^ft'll'^f'&' :: f' " : *; i ' :: ■■':."" 'Jilt;' '''Pt.;''* ' : '> J ''■
Fig. 11.
Materials
1 4 x 6 X % in. block of wood
2 2 X 4 x V6 in. composition boards
2 2 X 5Vi X Vs in. composition boards
1 6 volt battery
1 paper clip
24 Vz in. wood screws (no. 4)
8 Vi in. machine screws (632)
8 nuts (632)
2 ft. insulated hookup wire (20 gage)
1 ft. insulated wire (18 gage)
Construction
1. Attach battery to block of wood using uninsulated wire and wood
screws. See Fig. 12.
2. Assemble the 4 pieces of composition board to the block of wood as
shown in Fig. 13. After drilling screw holes, attach the board with
3. Construct two 2in. long common tiepoint terminal strips (see con
struction details below). Mount them on the front side of the junction
box as in Fig. I3(a) with Viin. machine screws and nuts.
4. Construct a singlepole switch with the paper clip and two wood screws
and attach at side of terminals as shown in Fig. 13.
Computer Control
123
Fig. 12.
SPST
SWITCH
mm
' Ml
I
J&
\
v
B +
y\
<b
: \
m BTN
(A)
(8)
Fig. 13.
124
How to Build a Working Digital Computer
o
o
DISP
ANS
RIGHT SIDE
(A)
o
o
o
INP A
DIP E
L
EFT SIC
IB)
E
Fig. 14.
5. Connect the negative battery terminal to one strip as shown in Fig. 13
with insulated hookup wire. Connect the positive battery terminal to
one side of switch. Connect other side of switch to remaining common
tiepoint terminal strips.
6. Label the strip connected to switch B+ BUS and the other RTN BUS.
When wiring into the computer system, use separate wood screws for
each connection whenever possible.
7. Construct four 1in. long common tiepoint terminal strips and mount
two on each side of the junction box with Viin. machine screws and
nuts (Fig. 14).
8. Insert two Vi in. wood screws in each terminal strip mounted in Step 7.
Do not screw them down tight.
9. Label the four terminal strips mounted in Step 7 as follows; DISP,
ANS, INP A, INP B.
CONSTRUCTION DETAILS— COMMON TIE POINT
TERMINAL STRIPS
Materials
Construction board (1in. wide, VSin. thick, length to suit application)
Fine wire mesh or aluminum foil
Vim.. wood screws
Fig. 15.
Computer Control 125
Construction
1. Cut 1in. construction board to desired length.
2. Cut wire mesh to same size as construction board cut in Step 1.
3. Attach the wire mesh to the board as illustrated in Fig. 15 using '/iin.
wood screws approximately every inch along the edges.
4. To connect wire to the mesh, place the stripped end over the mesh
or aluminum foil and secure it with a wood screw or thumb tack. Make
sure that the wire is in firm contact with the mesh or aluminum foil.
Chapter 7
Up to now we have concerned ourselves with the problem of
devising and constructing a machine with a certain "builtin capability"
to perform such basic operations as addition, subtraction, shifting, etc.
The subject of this chapter is how the computer is directed so that it
uses its builtin capabilities to solve the problem or problems at hand.
This subject is known as programming.
To make a computer solve a problem, the method by which the
computer is to solve this problem must be defined and related, in step
V»« r pton co'iuon/ip */* the* i*ief"i""M/*+i/vrie oxroil oWI** in rna ^AiYimitopQ incffii/>_
l/V*OlVU &WUUWUV&J bVS 14JLK llldtl UVUVllJ UVUllUUl^ XAA UIV ^IAULLLSUL^J. 3 111J11UW
tion repertoire. This repertoire was discussed in Chapter 6.
THE PROGRAMMING PROCESS
The process of creating a program for a particular computer
resolves itself into the following basic steps:
1 . Define the problem and what data are available for its solution;
define the form of the solution.
2. Outline the method of solution in graphic form using a "flow
chart."
3. Write the entire program, step by step, using the instructions
available in the instruction repertoire and the appropriate
address codes.
4. Try the program on the computer, using enough different sets of
raw input data to provide confidence in the general applicability
of the program.
Defining the problem is a very important step in devising a pro
gram, since an efficient program can only be written if it is properly
organized at the start. The problem definition phase may result in
several subproblem definitions. In this case, several smaller programs,
called routines or subroutines, may be devised along with an overall
"executive" routine that directs the use of the subroutines. A typical
program consisting of an executive routine plus several subroutines is
indicated in Fig. 71. This diagram is called a flow chart, since it indi
cates the "flow" of the program.
Once the overall configuration of the program is defined by flow
chart, each subroutine is outlined using detailed flow charts. A typical
126
Programming Our Computer
127
START
J
NO
<
CiSTHISA N
SALARIED EMPLOYEE h
TIME CHART? J
YES
DO EXECUTIVE
PAYROLL SUBROUTINE.
> <
2
DO SALARIED
EMPLOYEE PAYROLL
SUBROUTINE
>
(IS EMPLOYEE MEMBER \
OF PENSION PLAN? J
00 PENSION \
SUBROUTINE /
£
PRINT
PAYCHECK
END
J
Fig. 71. A typical overall flow chart.
c
START
J
TOTAL NUMBER
OF HOURS WORKED
(DO TOTAL HOURS \_
EXCEED 3T.5? J~
SET TOTAL PAY
EQUAL TO BASIC PAY
£
CALCULATE
TAX DEDUCTIONS
C
EXIT
CALCULATE
OVERTIME PAY
ADD OVERTIME
PAY TO BASIC
Fig. 72. A typical detailed flow chart.
128
How to Build a Working Digital Computer
SYMBOL MEANING
J) START OR END OF A ROUTINE
O ob C )
INDICATES A DECISION REQUIRED
AN OPERATION
<
>
o
A SUBROUTINE
A CONNECTION POINT
Fig. 73. Flow chart symbols.
detailed flow chart is illustrated in Fig. 72. This chart shows both the
sequence and logic of the routine.
At this point, you may have noticed that boxes and symbols of
different shapes are used on the flow charts. There are several standards
currently in use in the computer industry for such symbols. We will
use those shown in Fig. 73.
TABLE 71 . TYPICAL PROGRAM CODING SHEET
MNEMONIC
INSTRUCTION
WORD
STEP
ORDER
ADDRESS
REMARKS
00
RIN
04
210
Hours worked Monday
01
RIN
04
211
Hours worked Tuesday
02
RIN
04
212
Hours worked Wednesday
03
RIN
04
213
Hours worked Thursday
04
RIN
04
214
Hours worked Friday
05
ADD
01
300
Total hours
06
TRA
02
100
37. 5 to Xregister
07
SUB
11
300
Total 37.5
10
COJ
21
015
<37. 5 jump to 015
11
MTJL
43
300
Overtime Pay
12
TRA
02
100
Basic pay to Xregister
13
ADD
01
300
Total pay
14
JUP
30
016
Jump to tax deductions
Programming Our Computer 129
After the detailed flow chart is prepared, the program is coded,
using the appropriate instructions, addresses, and codes. Table 71 illus
trates a typical program coding sheet.
USING OCTAL CODES
Because of the number of digits required to specify a complete
instruction word (28), a shorter code is used when programming. This
code uses octal (base 8) numbers, instead of binary numbers. It is a
simple substitution of a symbol used in the octal system for a set of
three consecutive binary digits. Use of the octal code cuts the space
required for writing instruction words to onethird. The table below
shows the correspondence of octal and binary numbers.
Octal
8"
1
2
3
4
5
6
7
To convert from binary to octal, the binary word is separated into
groups of three consecutive digits, starting at the right. Each discrete
group of three digits is then compared with the corresponding octal
symbol. For example, the code for SHR is 0001000000. To convert to
octal, the binary word is separated as follows:
xxO 001 000 000
Then, for each group of three digits, the corresponding octal symbol is
selected. Therefore:
10
This shortcut method of writing out long binary words is possible
because 2 s is equal to 8 1 .
Table 72 provides the octal codes for the various instructions and
addresses used in our computer. Refer to Chapter 6 for details of the
instruction repertoire and the corresponding binary codes. The "Re
marks" column of the table uses the following shorthand conventions:
( ) = contents of
: automatic routing of data
Binary
22
21
20
1
1
1
1
1
1
1
1
1
1
1
1
» = manual routing of data
130
How to Build a Working Digital Computer
TABLE 72, COMPUTER INSTRUCTIONS
OPERATION
CODE
ADD
OCTAL
CODE
1000
ADDRESS
CODES
000000
REMARKS
(Ace) + (x) — ► Ace Display
M
(Ace Display) — ► Ace
(x) — — «■ zero
ADD lamp on
SUB
0400
000000
(Ace)  (x) — ► Ace Display
M
(Ace Display) — ► Ace
(x) —  zero
SUB lamp on
STO
0200
SHR
SHL
0100
0040
400004
200004
100004
040004
020004
400004
200004
100004
040004
(Ace) — • Ace Display
(Ace Display) ^ CORE
ADDRESS
STO (store) lamp on
Core address 1 lamp on
Core address 2 lamp on
Core address 3 lamp on
Core address 4 lamp on
Core address 5 lamp on
(Ace) —— Ace Display
1 M .
(Ace Display) 2 — «■ Ace
(Shift one place)
SHR (shift right) lamp on
Shift two places
Shift three places
Shift four places
400004
200004
100004
040004
Ace Display
,1 M
(Ace) •
(Ace Display) 2* ^» Ace
SHL (shift left) lamp on
Shift one place
Shift two places
Shift three places
Shift four places
Programming Our Computer
TABLE 72. COMPUTER INSTRUCTIONS (Cont.)
131
OPERATION
CODE
OCTAL
CODE
ADDRESS
CODES
REMARKS
TRA
0020
000004
(Ace) — *• Ace Display
M
(Ace Display) — ► x
TRA (transfer) lamp on
JUP
0010
JUP (jump) lamp lights
To identify jump sequence
the following addresses
are used:
010000
Jump to 1
004000
Jump to 2
002000
Jump to 3
001000
Jump to 4 (opposite
direction)
COJ
0004
COJ (conditional jump)
lamp lights
To identify jump sequence
the following addresses
are used:
010000
Jump to 1
004000
Jump to 2
002000
Jump to 3
001000
Jump to 4 (opposite
direction)
RIN
0002
000400
RIN (read in) lamp lights
INPUT A displayed on IBD
M
(IBD) — Ace
000200
Same as above, but
INPUT B
000100
Input C lamp lights
Core — "Core display by
throwing (address) dis
play switch manually
corresponding to lighted
address lamp
(Core Display) .Ace
400100
Core address 1
200100
Core address 2
100100
Core address 3
040100
Core address 4
020100
Core address 5
132
How to Build a Working Digital Computer
TABLE 72. COMPUTER INSTRUCTIONS (ConK)
OPERATION
OCTAL
ADDRESS
CODE
CODE
CODES
REMARKS
RUT
0001
000004
RUT (read out) lamp lights
(Ace) — » Ace Display
000044
10 lamp lights
(Ace Display) ^ 10 1 ORD
000024
10 lamp lights
Tin n
(Ace Display) ^ 10" ORD
000014
ANS lamp lights; output dis
play matrix is energized
DEVISING A SIMPLE PROGRAM
At this point, we are ready to try our first program. A simple
program is best to start with, so let us devise a program for subtracting
decimal input B from decimal input A. The result of the subtraction
must be displayed in decimal form.
We recall now that the input unit automatically converts decimal
C
START
\
)
CORE 1 ■ 0000
3 ■ 0001
5 ■ 0000
2 ■ OOOO
1  0000
LOAD CORE
MEMORY
15
1
READ A AND B
INTO All
68
1
SUB
9
H
1
NC
1
c
IS DIFFERENCE
NEG
)
rES
1
RUT OIF 10°
II
1213
14
1517
COMPLEMENT
1
1
RUT 10' =0
18
RUT COMPIO
1
1
ANS
1920
RUTIO'I
1
*
21
ANS
1
y
(
STOP
)
Fig. 74. Subtraction routine flow chart.
Programming Our Computer 133
data to binary and that the output unit automatically converts binary
coded decimal data to decimal. However, since we are limiting ourselves
to numbers less than 10, the binary numbers in the computer will be
identical to BCD numbers and may be read direcdy into the output unit.
The first step, now that the problem has been defined, is to out
line the program using a flow chart. The flow chart for the subtract
program is illustrated in Fig. 74. Initially, the core memory is loaded
with all zero's except for one location where 0001 is set for use in
reading out the sign digit when the result of the subtraction is negative.
After the core memory is loaded, input B is placed in the Xregister
and input A in the accumulator. The difference, A — B, is obtained by
the SUB instruction. If the difference is positive, it is read out as 10°,
since this difference must be less than 10 and therefore already in BCD
form. A is then extracted from core memory and read out (10 1 = 0)
to indicate a positive number.
If the difference is negative, it is complemented to obtain its abso
lute value. The complement is obtained by subtracting the difference
from 2 4 . This absolute value is read out as the magnitude of the differ
ence (10° digit). The stored sign digit, 1, is then extracted from core
address 3 and read out as 10 1 , indicating a negative number.
Now, with the logic outlined, the actual program coding may be
performed. Table 73 lists the coding for the entire subtract program.
PROGRAMMING MULTIPLICATION
Programming the multiplication process is a more complicated
procedure than programming subtraction. Because of this, it is neces
sary to refamiliarize ourselves completely with the process of multipli
cation before we do any actual programming. Let us examine the basic
problems encountered when paperandpencil multiplication is per
formed. For example, the problem 24 x 13:
24 multiplicand
X 13 multiplier
72 partial product
24 partial product
312 product
In this operation, we take the least significant numeral of the multi
plier and mentally add the multiplicand to itself the number of times
indicated by the multiplier numeral. The sum in this case, 72, is set
down just below the multiplier in the proper position. We then take the
next significant numeral of the multiplier and mentally add the multi
plicand to itself the number of times indicated by this multiplier numeral.
The sum in this case, 24, is set down below the previous sum but is
shifted to the left by one column. Then both sums are added to obtain
134
How to Build a Working Digital Computer
j£*tA6LE /a. bUBlKA(_l KUUMINt t_<~>L>IIN^
,■*■■ ,
INSTRUCTION
WORD
STEP
MNEMONIC
ORDER
ADDRESS
REMARKS
1
RIN
0002
400000
Load core address 1 = 0000
2
RIN
0002
101000
Load core address 3 = 0001
3
RIN
0002
020000
Load core address 5 = 0000
4
RIN
GGC2
5
RIN
0002
040000
Load core address 4 = 0000
6
RIN (B)
0002
000200
Read B into accumulator
7
TRA
0020
000004
Transfer B into Xregister
8
RIN (A)
0002
000400
Read A into accumulator
9
SUB
0400
000000
A  B = difference
10
COJ
0004
010004
If difference negative, jump
to 15
11
RUT (10°)
0001
000024
Difference = 10 output
12
RIN (C)
0002
400100
Read core 1 = 0000 into
accumulator
13
RUT (10 1 )
0001
000044
Sign = (pos) (10 ) output .
14
ANS
0000
000010
Positive difference
15
TRA
0024
010004
Negative difference to
Xregister
16
RIN(C)
0002
400100
Read core 1 = 0000 into
accumulator
17
SUB
0400
000000
Complement negative
difference
18
RUT (10°)
0001
000024
Complement = magnitude
of negative difference
= 10° output
19
RIN (C)
0002
100100
Read core 3 = 0001 into
accumulator
20
RUT (10 1 )
0001
000044
Sign (10 1 ) digit = 1 for
negative sign
21
ANS
0000
1
000010
1 1
1
Negative difference
1
the final answer, 312. Note that multiplication, when broken down to
its basic steps is actually an addition process.
Let us now examine multiplication in the binary system. Let us
multiply 1011 and 1010.
Programming Our Computer 135
1011 multiplicand
1010 multiplier
0000 partial product P
1011 partial product P x
10110
0000 partial product P 2
010110
1011 partial product P 3
01101110
01101110 product
This operation is exactly the same as in the decimal system with one
small difference. Since the binary system has only two symbols, and 1,
the partial products can be equal to either all zeros or to the multiplicand.
With the above examples in mind, let us attempt to write down,
in sequence, all the basic operations which go into the performance
of a multiplication. To make this list of operations easier to work with,
let us make the following algebraic definitions of terms:
1. The digits of the multiplicand are D 3 , D 2 , D 1 , and D° with D°
the least significant. The full multiplicand is referred to as D.
2. The digits of the multiplier are R 3 , R 2 , R 1 ,, and R° with R°
the least significant. The full multiplier is referred to as R.
3. The partial products are P , Pi, P2, P3 with P being that partial
product formed when multiplying the multiplier digit R° with
the multiplicand.
4. P i is the sum of partial products P and P x when Pi is properly
shifted to the left. Pom is the end product.
Now, in multiplying binary numbers, we notice that the partial
products are either zero or equal to the multiplicand. Hence, it is
merely necessary to examine the appropriate multiplier digit in order
to determine partial product. Therefore, to start our multiplication,
the first step is to examine the least significant digit (or bit) of the
multiplier. If the bit is a 0, the partial product is 0; if the bit is a 1,
thp partial product is equal to the multiplicand. The flow chart of
Fig. 75 indicates this procedure.
The next set of steps consists of examining the next bit to the left
in the multiplier. If this bit is a jsro, the partial product Pi equals
zero. If this bit is a 1, Pi equals D. The sum of the partial products,
P01, is then obtained by adding P and Pi.
This process continues as illustrated in Fig. 75 until the most
significant bit of the multiplier is processed. At the end of this process,
the sum of the partial products, Pom, is formed as the end product.
Now, let us apply our computer's instruction repertoire to the
solution just described by Fig. 75. The first general step is to examine
136
How to Build a Working Digital Computer
t
i'
P c D
1
1
<
t>
o
/
LEGEND
P.O
P,D
\\ EXAMINE
P„r<Po>2 +
P 0l =<P o )2 H +P,
i
1
i
^5 ■ IF QUANTITY IS 1
^<J> IF QUANTITY ISO
0,
$
s 1
/
P OI2 = IP I1 ,)2  +0
Poi! =(Poi)2" l+ D
1
1
. A
V '
I f
\y
?
Potzi CP i2>2"' +
Poi23 •(Poiz)2"' + 5
Fig. 75. Multiplication routine flow chart.
R°, that is, determine if the least significant bit (LSB) of the multiplier
is a 1 or a 0. This requires a decision on the part of the computer
based on the value of the LSB. The instruction in our computer's reper
toire covering this is CO J. However, COJ only examines the digit in
the most significant stage of the accumulator. Therefore, the multiplier
must be shifted to the left until the LSB is in the most significant stage
of the accumulator. The instructions required to examine the multiplier
bit form a subroutine, which we will refer to as the R" subroutine.
This subroutine comprises the following:
Read multiplier into accumulator (RIN)
Shift accumulator to left (SHL)
Observe MS place in accumulator, if a 1, jump to x (COJ)
Let us now examine the case when the condition is not satisfied,
that is, the LSB of the multiplier is 0. The problem now is to form
the first partial product based on the LSB being 0. We know from the
Previous discussion that this partial ^roduct is 0000. ^ince there i"
no way of insuring that 0000 is anywhere in the computer storage with
out actually having put this value someplace, we must load this particular
constant in memory before we start. Assuming that this was done and
that 0000 was loaded in core memory 3, then we can proceed as follows:
Read in from core 3 the value 0000 (RIN)
Shift to right once (SHR)
Programming Our Computer 137
Store data in accumulator in core 4 (STO)
Jump to instruction x (JUP)
The first instruction reads in the partial product from core 3.
The second instruction shifts the partial product once to the right,
causing the LSB of the partial product to be in the mostsignificant place
of the extension register. This shift is not significant here, since the
partial product is all zeros. However, adding it here allows this series
of instructions to be used in the more general case, which will be
described shortly. Remember when, with pencil and paper, the partial
products were put down in particular locations, each being offset from
the previous one by one place to the left.
The third instruction stores the accumulator data into core mem
ory address 4, which we will use as a temporary storage space for the
partial product.
The fourth instruction is necessary to jump over those instructions
that concern the operation when the initial condition is satisfied. This
entire set of instructions will be referred to as the R n — subroutine.
Now let us examine the case when the condition is satisfied. We
assume that as part of the input portion of the program, the multiplier
was read into core location 2 and the multiplicand was read into core
location 1. We know from the previous discussion that the multiplicand,
as it stands, becomes the first partial product. Therefore, we must
instruct the computer to relocate the multiplicand in the location
reserved for the partial product and we proceed as follows:
Read in partial product from core 4 (RIN)
Transfer to Xregister (TRA)
Read in multiplicand from core 1 (RIN)
Add multiplicand and partial product (ADD)
Shift accumulator one place to right (SHR)
Store remaining accumulator data in core 4 (STO)
The first instruction enters the partial product into the accumulator
and the next instruction transfers the partial product to the Xregister.
The third instruction reads in the multiplicand from core 1. This is
necessary, even though there is no partial product at this time, since now
a subroutine is established that is usable whether or not there is a
partial product. The fourth instruction adds the multiplicand and the
partial product. The fifth instruction shifts the new partial product
one place into the extension register. The need for this is the same as
previously mentioned. The last instruction stores the three mostsig
nificant bits in core location 4 for use later on. This subroutine will be
referred to as the R n = 1 subroutine.
Now we have developed the three subroutines necessary to program
completely for multiplication, except for instructions regarding input
and output (see Table 74).
At this point, the program is still not complete. While the basic
program is available, modifications must be made to account for shifting
138 How to Build a Working Digital Computer
TABLE 74. MULTIPLICATION ROUTINEPRELIMINARY
FUNCTION
Examine R
INSTRUCTION
RIN
SHL
COJ
STEP
DATA FLOW
P = D
Read in multiplier
Shift left 4 times (R° in MS
place)
If MSB = 1, Jump to 8
Read in core 3 (0000)
^if\oh^to\rWu\\ \
K1JN iu Read in core 1 (multiplicand)
Examine R
If
P ! = ( p 0> 2
1
SHR
STO
RIN
SHL
COJ
12
13
14
15
16
17
Shift once to right
Store in core 4
Read in core 2
Shift left 3 times (R 1 in MS
place)
If MSB = 1, Jump to 21
Read in core 4
If 1
= (P )+(D)2
JUP
Examine R
If
IP, )2"
SHR>
RIN
TRA
RIN
ADD
SHR
STO
//&/// W/ w/w*///
21
22
23
24
25
26
Shift once to right
Jump to 27
Read in core 4
Transfer to Xregister
Read in core 1 (multiplicand)
M
Add Ace + Xreg .Ace
Shift once to right
Store in core 4
RIN
SHL
COJ
RIN
SHR
JUP
27
28
29
30
31
*^\\N\\Sx^V*?\^
Read in core 2
Shin left 2 times (R in MS
place)
If MSB = 1, Jump to 34
Read in core 4 (0000)
Shift once to right
33 Jump to 14
Programming Our Computer
TABLE 74. MULTIPLICATION ROUTINEPRELIMINARY
INSTRUCTION LISTING (Cont.)
139
FUNCTION
INSTRUCTION
STEP
DATA FLOW
SHR>
RIN
34
Read in core 4
If 1
TRA
35
Transfer to Xregister
P 2 =(P 1 )+P)2 1
RIN
ADD
36
37
Read in core 1
Add Ace + Xreg M, Ace
SHR
38
Shift once to right
STO
39
Store in core 4
RIN
40
Read in core 2
3
Examine R
SHL
41
Shift left once (R 3 in MS
place)
COJ
42
If MSB = 1, Jump to 47
Qtm
43
Read in core 4
If
shr)
44
Shift once to right
P 3  (P 2 ) 2" 1
&r<\\\ N
,\&\
s&p\e\lXkfr:M\
JUP
46
Jump to 53
SHR>
RIN
47
Read in core 4
If 1
TRA
48
Transfer to Xregister
P 3 =(P 2 )+(D)2 1
RIN
ADD
49
50
Read in core 1
M
Add Ace + Xreg _l»Acc
SHR
51
Shift once to right
STO
52
Store in core 4
Output
Routine
53
f
N
data in the extension register. Notice that when we examine the multiplier
bit by shifting left we also shift data from the extension register into
the accumulator. Then we insert new data into the accumulator and
effectively lose those data that we originally shifted from the extension
register. Therefore, we must add an additional SHR instruction to
replace the data in the extension register prior to inserting new data
into the accumulator. This instruction must be added after the COJ
instructions in each of the following subprograms. For R" = 0:
SHR — Shift right a number of places to replace extension data
RIN — Read in from core 3
SHR— Shift right once
STO — Store in core 4
JUP — Jump to required step
140 How to Build a Working Digital Computer
For R n =z I:
SHR — Shift right a number of places to replace extension data
RIN — Read in from core 4
TRA — Transfer to Xregister
RIN — Read in from core 1
ADD — Add multiplicand and partial product
SHR— Shift right once
STO — Store in core 4
Now, it is necessary to delete and combine steps to shorten the
program because each unnecessary step takes time and memory space,
wmcn aie liic fc.cy xiunuiig poimntLtia ui a i/um^uuvi. nviv. mm. m mv
end of the R r " = routine a JUP exists and the two preceding steps are
SHR and STO. At the end of the R n = 1 routine an identical SHR and
STO exist. By deleting SHR and STO in the R a — routine and
jumping to the SHR and STO in the R n = 1 routine, two instructions
can be saved for each examination. Three steps may be saved in the
examine R° routine by deleting RIN from core 4, TRA, and ADD. This
can be done since there is no partial product in core 4 at the start of
the program.
At this point, with the basic program completed, since the accumu
lator and extension register are both full and we have generated partial
products four times, the final product is in the accumulator and the
extension register. The most significant bits (MSB) are in the accumu
lator and the least significant bits (LSB) are in the extension register.
It is necessary to read out the answer. First we must store:
Shift word in extension register to left
Store in core 5
Since the answer is in binary and the output unit uses BCD code,
it is necessary to perform a separate readout routine described later
in this chapter to convert binary to binarycoded decimal for readout.
The addresses for the MSH and LSH (most significant half and least
significant half) are, respectively, A and B. When the RUT order for
the MSH is displayed, transfer the accumulator data to the A input on
the encoder, and the LSH to the B input, then begin the readout routine.
Before writing down the entire program we must now determine
the input portion of the program based on what is required in the
multiplication portion of the program.
Recall the following requirements on our core memory:
1. Partial product in core 4
2. MS part of final product answer in core 4
3. LS part of final product in core 5
4. Multiplier in core 2
5. At start core 3 loaded with 0000
6. Multiplicand in core 1
Programming Our Computer
141
The object of the input portion of the program is to ensure that
all quantities required in the program are available. Therefore, we
specify the following:
Read in multiplicand
Store multiplicand in core 1
Read in multiplier
Store multiplier in core 2
The preload data for the multiply program are as follows:
Core No.
1
2
3
4
5
Data
0000
0000
0000
0000
0000
Table 76 is a checkout routine of the program in Table 75. Use
it to check your program after it has been cut and mounted.
TABLE 75. MULTIPLY PROGRAM
INSTRUCTION
MNEM
ONIC
WORD
02
ORDER
ADDRESS
REMARKS
1
RIN
0002
400000
M '
0000 == core 1
2
RIN
0002
100000
„. M
0000 —  core 3
M
0000 — — core 5
Load
3
RIN
0002
020000
Instruc 
4
RIN
0002
200000
„„„„ M
0000 — ► core 2
tions
5
RIN
0002
040000
0000 ^L core 4 )
6
RIN
0002
000400
M
IBDA ^ Ace \
7
STO
0200
400004
M
Ace » core 1
8
RIN
0002
000200
M
IBDB =~ Ace
Input
9
STO
0200
200004
Ace »• core 2 /
^ .__
10
SHL
0040
040004
2 4 Ace Ace
R°
11
COJ
0004
010004
If MSB = 1, Jump to 14 '
12
RIN
0002
100104
Core 3 JL. Ace j R =0"j
01
13
JUP
0010
004000
Jump to 16 j Pn=0
35 "h
■a '
14
15
RIN
SHR
0006
0100
410104
400004
Core 1 5L Ace 1 R°=l
2" 1 Ace ^— Ace J P =D
■S&.
■a
16
STO
0210
044004
Ace >■ core 4 '
05
17
RIN
0002
200104
Core 2 ► Ace
2 3 Ace » Ace
Examine
18
SHL
0040
100004
R 1
19
COJ
0004
002004
If MSB = 1, Jump to 23
142
How to Build a Working Digital Computer
TABLE 75. MULTIPLY PROGRAM (Cont.)
PL,
W
MNEM
ONIC
INSTRUCTION
WORD
H
ORDER
ADDRESS
REMARKS
20
21
22
SHR
RIN
JUP
0100
0002
0010
100004
040104
010000
2 3 Ace » Ace
, M .
Core 4 « Ace
Jump to 28
R X =0
Pr(Po) 2 " 1
23
24
25
26
27
SHR
REM
TRA
RIN
ADD
0104
00Q2
0020
0002
1000
102004
040104
000004
400104
000000
2' 6 Ace Ace
Core 4 »■ Ace
M „,
Ace  Xregister
Core 1 Ace 1
M
Acc+Xreg ► Ace,
Xregister M» J
Rl = l
^P 1 =(P )2 1 +D
28
29
SHR
STO
0110
0200
410004
040004
2" 1 Ace  Ace i
Ace —  — » core 4 ) 1
30
31
32
RIN
SHL
COJ
0002
0040
0004
200104
200004
004004
M
Core 2 »Acc
2 2 Ace ► Ace
If MSB=1, Jump to 36 ,
, Examine
R 2
33
34
35
SHR
RIN
JUP
0100
0002
0010
200004
040104
002000
2 " 2 Ace ► Ace
M
Core 4 ■ Ace
Jump to 41
R 2 =0
P 2 =(P 1 )2"1
36
37
38
39
40
SHR
RIN
TRA
RIN
ADD
0104
0002
0020
0002
1000
204004
040104
000004
400104
000000
2" 2 Ace Ace
Core 4 — — Ace
M
Ace ■ Xregister
Core 1 ► Ace
M
Ace + Xreg  Ace,
Xregister M.
R = 1
^P 2 =(P 1 )2" 1 + D
41
42
SHR
STO
0110
0200
402004
040004
2" 1 Ace »Acc
M
Ace core 4
Store (P2J2" 1
43
44
45
RIN
SHL
COJ
0002
0040
0004
200104
400004
010004
M
Core 2 =i— Ace
„1 „ M .
1 L Ace » Ace
If MSB =1, Jump to 49
Examine
R3
46
47
48
SHR
RIN
JUP
0100
0002
0010
400004
040104
004000
2"! Ace ► Ace I
. M a Ir 3 =o
Core 4^— Ace fp =(P )2"
Jump to 54 )
Programming Our Computer
TABLE 75. MULTIPLY PROGRAM (Cont.
143
INSTRUCTION
w
MNEM
ONIC
WORD
REMARKS
ORDER
ADDRESS
49
SHR
0104
410004
2" 1 Ace ^ Ace ,
50
RIN
0002
040104
Core 4 ■ Ace
51
TRA
0020
000004
M
Ace ■ X register
,R S =1
52
RIN
0002
400104
Core 1 ■ Ace
P 3 =(P 2 )2
•L+D
53
ADD
1000
000000
M
Ace + Xreg ► Ace.
Xregister 2^— )
54
SHR
0110
404000
2" 1 Ace ► Ace 1 Store
55
STO
0200
040004
A M „ \ (P9)2 _1
Ace ► core 4 ) 6
56
RUT
0001
000404
Ace = MSH of Answer
57
SHL
0040
040004
o4 a M .
2* Ace  Ace
58
STO
0200
020004
M
Ace ► core 5
/Go into \
S
OS
59
RUT
0001
000204
Ace = LSH of Answer 1 read out J
\program/
CS
TABLE 76. MULTIPLY CHECKOUT
15 x 15 = 225
ft
FUNCTION
n
CONTENTS AFTER COMPLETION
OF FUNCTION
X/l
Ace
Ext
XReg
Corel
2
3
4
5
6
RIN A
Read in A
1111
0000
0000
0000
0000
0000
0000
0000
7
STO 1
Store in 1
\
1111
8
RIN B
Read in B
1111
'
>
9
STO 2
Store in 2
'
1
\
1111
10
SHL 4
Shift left 4x
1
0000
11
COJ 14
RIN 3
If neg jump to 14
Read in 3
Ju
12
144
How to Build a Working Digital Computer
TABLE 76. MULTIPLY CHECKOUT (Cont.)
CONTENTS AFTER COMPLETION
FU
C
NCTION 55
OF FUNCTION
—
tl
to
Ace
Ext
XReg
dorel
2
3
4
5
13
JUP16
RIN 1
Jump to 1 6 1
Read in 1
1 I
14
1111
'
15
SHR 1
Shift right lx
0111
\
1000
"
16
STO 4
Store in 4
0111
1 7
RlrJ 2
Read in 2 i
1111
1
18
SHL 3
Shift left 3x 1
1100
0000
19
COJ 23
SHR 3
If neg jump to 23
Shift right 3x
20
21
RIN 4
Read in 4
22
JUP 28
SHR 3
Jump to 28
Shift right 3x
..J
23
0111
1C
00
24
RIN 4
Read in 4
0111
\
25
TRA
Trans to Xreg
0111
\
26
RIN 1
Read in 1 ,
r 1111
27
ADD
Add 1
0110
1
'
0000
28
SHR 1
Shift right lx C
1011
0100
1
f
29
STO 4
Store in 4
\
1
1
101
1
1
30
RIN 2
Read in 2
F nn
!
f
i
1
j
31
SHL 2
Shift left 2x
L 1101
0000
'
f
T
"
r
1
T
32
COJ 36
SHR 2
If neg jump to 36
Shift right 2x
1 1101
0000
0000 1 1111
111
1 0000
101
1 0000
33
i
I
34
RIN 4
Read in 4
35
JUP 41
SHR 2
Jump to 41
Shift right 2x
36
f
0111
0100
37
RIN 4
Read in 4
1011
1
38
TRA
Trans to Xreg
1011
\
3S
RIN 1
Read in 1
,, 1111
4C
ADD
Add
1 1010
"
0000
41
SHK 1
Shift right lx
1101
Guli
'•'<
4S
STO 4
Store in 4
\
IK
)1
4;
! RIN 2
Read in 2
u mi
■'
4<
I SHL 1
Shift left lx
1 1110
0100
4
> COJ 49
3 SHR 1
If neg jump to 49
Shift rieht lx I
1
4
I
i
Programming Our Computer
TABLE 76. MULTIPLY CHECKOUT (Conf.)
145
CONTENTS AFTER COMPLETION
FUNCTION
O
1 — 1
OF FUNCTION
H
Ace
Ext
XReg
Corel
2
3
4
5
47
RIN4
Read in 4
i
48
JUP54
SHR 1
Jump to 54
Shift right lx
1
49
1111
0010
50
RIN 4
Read in 4
1101
"
51
TRA
Trans to Xreg
1101
52
RIN 1
Read in 1
1
i
1111
I
53
ADD
Add
L
1100
''
0000
54
SHR 1
Shift right lx
1110
0001
"
55
ST0 4
Store in 4
1
1110
56
RUT
Read out MSH
1
1110
1
57
SHL4
Shift left 4x
0001
0000
"
58
STO 5
Store in 5
i
\
1
0001
1
59
RUT
Read out LSH
i
0001
1
'
r
'
'
'
r
f
''
PROGRAMMING DIVISION
Before devising a divide program, let's examine the basic problems
encountered when we divide using paper and pencil. Let's divide 52 by 4:
1 3 Quotient
Divisor « 4\/52" Dividend
4_
12
\2
In this operation we "guess" at a number which, when multiplied by
the divisor, will give us a product less than the dividend. If the product
is less, then we subtract this from the dividend. The remainder from the
subtraction, if less than the divisor, is then treated as a new dividend
and the process is repeated. However, if the remainder is greater than
the divisor, then we increase the number initially "guessed at" and
repeat the process. If the product is more than the dividend, then we
decrease the guessed at number and repeat the process.
146
How to Build a Working Digital Computer
TTeirtrt' KIrtOfir r»11«"»l*e»1*C A\ii\At> f\f\\ 1 irtt/% 1001 ■
0011
ooi iv looi
10
00
100
011
0011
0011
000
This method is the same as with decimal numbers. However, the
guessing is simplified since there are only two symbols.
Figure 76 is a flow chart of the division program. The following
1. The digits of the dividend are D 3 , D 2 , D 1 , and D°.
2. D refers to the entire dividend.
3. The digits of the divisor are R 3 , R 2 , R 1 , and R°.
4. R refers to the entire divisor.
5. The digits of the quotient are Q 3 , Q 2 , Q\ and Q°.
6. The partial remainders are P , Pi, P2, P3, P4, and P 6 .
To develop the specific flow we must examine each function in the
general flow and, recalling the characteristics of the computer, specify
the particular instructioas required.
The first general step is to determine if the MSB of the quotient
is or 1. If 1, jump to the specified instruction. If 0, continue with the
next step. This requires a decision by the computer based on the divisor
and the MSB of the dividend. The instruction covering the decision is
COJ. COJ operates when the digit in the MS place of the accumulator
display is a 1. Therefore, the dividend and divisor must be operated
on to give the information we need. This can be accomplished by sub
tracting the divisor from the most significant digit of the dividend. We
can now specify the examination routine.
Read in divisor
Transfer to Xregister
Read in dividend
Shift dividend until MSB is in LS place of ACC
Subtract
Observe MS place in accumulator display, if a 1 jump to x(Q 3 = 0)
The first three instructions are, respectively, RIN, TRA, and
RIN. These read in the divisor and dividend and set up these quantities
for an arithmetic operation. It is assumed here that the dividend and
Programming Our Computer
147
Fig. 76
divisor had previously been read into memory as part of the input
routine. The fourth step shifts the MSB of the dividend until the bit
is in the least significant place of the accumulator. For instance, divide
1010 by 0101: 0101 (divisor) is in the Xregister and 1010 (dividend)
is in the accumulator. Shifting the dividend as specified sets 0001 into
the accumulator; i.e., we have 0001010, where 0001 is in the accumu
lator and 010 is in the extension register.
The fifth instruction, SUB, is subtraction, and the sixth is the
conditional jump, COJ. If, as a result of subtraction, a 1 is in the
MS place of the accumulator display, then the condition is satisfied
and the jump is made to the particular step further in the program.
Under this condition, Q 3 is a and can be set into memory. The portion
of the program detailing this is given later on. When a occurs in the
MS place, the program continues to the Q" = 1 routine.
In the Q" = 1 routine, two things should be considered: (1) In the
paper and pencil method, a "new" dividend is developed by "bringing
148 How to Build a Working Digital Computer
^^irm" ™ n ,t r.f tUa nrlmtiat HiizJ^OTiri ptlfl tpflf'"" <* <~l« trt the TQVTl 3 ! Tl dCF
(2) A 1 must be stored in the proper location each time Q n = 1.
We will now develop a generalized program for any Q n — I and
then modify each set for Q 3 = 1, Q 2 = 1, Q 1 = 1, and Q° = 1. The
generalized Q n = 1 program takes the following form. It comprises two
portions, generation of the new dividend and generation of the new
partial quotient Q".
New Dividend
STO — Store remainder in accumulator in core 4
RIN — Read in dividend from core 1
SHR — Shift dividend to right x times
RIN — Read in remainder from core 4
SHL— Shift left x times
STO — Store new dividend in core 1
New Partial Quotient
RIN— Read 0001 from core 5
SHL — Shift 0001 left x times
TRA — Transfer to Xregister
RIN — Read in old partial quotient from core 3
ADD— Add
STO — Store new partial quotient in core 3
JUP — Jump to next examination routine
The first step, STO, stores the remainder from the previous sub
traction order in core memory location 4. The next four steps, RIN,
SHR, RIN, SHL, bring in the dividend, shift the lesser significant
digits into the extension register, bring in the remainder, and then
shift those lesser significant digits of the dividend out of the extension
register. This effectively "brings down" the original dividend and tacks
it onto the remainder. The value of x varies for each Q" = 1 routine.
For n = 3, x — 3;iot n = 2, x — 2; therefore, x = n. The next order,
STO, replaces the original dividend in core 1.
The next seven orders generate the partial quotient. The first
order, RIN, brings 0001 in from core 5. This number is a preload
requirement and must be loaded into the drum at the start of the
program. The second order, SHL, shifts the 0001 to the proper loca
tion, x in this case being equal to n. The next three instructions, TRA,
RIN, and ADD, combine the previous partial quotient with the new
partial quotient. The next step, STO, stores the new quotient in core 3
and the following step, JUP, directs the program to the next examine
routine.
In the Q" = routine, no action is required. Therefore, this routine
does not exist and the COJ instruction of the examine routine specifies
a jump to the examine routine.
Before calling the basic program final, it is necessary to see if it
can be shortened. Examine the first time through the routine when the
result of the examination is positive. Under this condition we note the
following three possible conditions :
Programming Our Computer 149
1. D 3 = landR=l
2. D 3 = landR =
3. D 3 = 0andR =
The last two conditions indicate division by zero, which is an
invalid operation. Therefore, the only valid condition is the first one,
which is division by 1. This, of course, yields the dividend as the
quotient. We then can substitute the Q 3 = 1 routine for the generalized
Q" = 1 routine, which will involve the following orders:
RIN — Read in dividend from core 1
RUT — Read out answer
In the Q n = 1 routine where n = 2, we note that the Q 3 digit is
by virtue of the preceding discussion. Therefore, there is no need
to add the old quotient to the new and we can rewrite the "generate
new quotient" portion as follows:
RIN— Read in 0001 from core 5
SHI^Shift left twice
STO — Store partial quotient in core 3
The Q 1 = 1 routine remains as in the generalized Q" — 1 routine.
However, in the Q° = 1 routine we consider the following:
1. There is no need to store the remainder, except of course if
you wish to continue the program to obtain fractions in the
end quotient.
2. There is nothing left of the dividend to "bring down."
3. The prestored data 0001 is in the proper position before adding
to the old quotient.
The program can be revised as follows :
RIN— Read in 0001
TRA — Transfer to Xregister
RIN — Read in "old" quotient from core 3
ADD— Add
STO — Store "new" quotient in core 3
Now we have developed the subroutines necessary to program
completely for division, except for input and output. Table 77 con
tains the full list of the previously discussed instructions.
The input instructions for the divide program consist of reading in
the divisor and dividend. The divisor is stored in core 2 and the
dividend in core 1. The following sequence is suggested:
Read in divisor
Store in core 2
Transfer to Xregister
Read in dividend
Store in core 1
With these five instructions we disregard the first three instructions
in the basic program to shorten the program as much as possible.
150
How to Build a Working Digital Computer
TABLE 77. BASiC DiViSiON ROUTINE
FUNCTION
INSTRUCTION
STEP
DATA FLOW
RIN
1
Read in divisor
TRA
2
Transfer to X register
RIN
3
Read in dividend
3
Examine D
SHR
4
Shift right 3 times
SUB
5
Subtract
COJ
6
If MSB = 1, jump to 9
D 3 =l
RIN
7
Read in dividend
RUT
8
Read out answer
RIN
9
Read in divisor
TRA
10
Transfer to X register
D 3 =
RIN
11
Read in dividend
Examine D"
SHR
12
Shift right twice
SUB
13
Subtract
COJ
14
If MSB = 1, jump to 24
STO
15
Store remainder in core 4
D 2 =l
RIN
16
Read in dividend
Generate
SHR
17
Shift right twice
new
RIN
18
Read in remainder from core
4
dividend
SHL
19
Shift left twice
STO
20
Store "new" dividend in core
.
D 2 = 1
RIN
21
Read in 0001 from core 5
Generate
partial
quotient
SHL
STO
22
23
Shift left twice
Store Partial Quotient in core
3
RIN
24
Read in divisor
TRA
25
Transfer to Xregister
D 2 =
RIN
26
Read in dividend
Examine D
SHR
27
Shift right once
SUB
28
Subtract
COJ
29
If MSB = 1, jump to 42
STO
30
Store remainder in core 4
D l =l
RIN
31
Read in "dividend" from core
1
Generate
SHR
32
Shift right once
new
RIN
33
Read in remainder from core
4
dividend
SHL
34
Shift left once
STO
35
Store new "dividend" in core
1
Programming Our Computer
TABLE 77. BASIC DIVISION ROUTINE (Conf.)
151
FUNCTION
INSTRUCTION
STEP
DATA FLOW
RIN
36
Read in 0001 from core 5
D 1 !
SHL
37
Shift left once
Generate
TRA
38
Transfer to X register
partial
RIN
39
Read in partial quotient from
quotient
core 3
ADD
40
Add
STO
41
Store new partial quotient in
core 3
RIN
42
Read in divisor
1
TRA
43
Transfer to X register
D 1 =
Examine D
RIN
44
Read in "dividend" from core 1
SUB
45
Subtract
COJ
46
If MSB = 1, jump to 52
(output routine)
RIN
47
Read in 0001 from core 5
D°=l
TRA
48
Transfer to X register
Generate
RIN
49
Read in partial quotient from
end
core 3
quotient
ADD
50
Add
STO
51
Store end quotient in core 3
The output instructions consist of reading out the answer. The
single instruction, "Read out accumulator," is the only one required.
This instruction takes the form RUT and the address code would corre
spond to ANS. Also, as part of the output, the COJ instruction in
step 46 of the basic program causes a jump to step 52, "Read in from
core 3." Note the last step in the basic routine, "Store in core 3,"
becomes unnecessary.
The loading for the complete divide program shown in Table 78 is:
Core 1
2
3
4
5
0000
0000
0000
0000
0001
Table 78 lists the entire division program including load data,
input/output, and the basic routine. Table 79 is a checkout for the
divide routine. Use it to verify the program ruter it is cut and mounted
on the drum.
152
How to Build a Working Digital Computer
tadi c f^o rui/inc oor^rtDAkA
INSTR
CJCTION
MNEMONIC
WORD
STEP
ORDER
ADDRESS
REMARKS
1
RIN
0002
400000
Core 1 — 0000
2
RIN
0002
100000
Core 3 ^~ 0000
3
RIN
0002
021000
Core 5 ^ 0001
^
T
DTTVT
Anno
onf\f\f\f\
M
n — „ o  nnnn
5
RIN
0002
040000
lVff
Core 4 ^ 0000
6
RIN
0002
000404
M
IBDA — Ace (Divisor)
7
STO
0200
200004
A M 1
Acc ► core 2
8
TRA
0020
000004
M
Acc — ► Xregister
9
RIN
0002
000204
IBDB ^ Acc (Dividend)
10
STO
0200
400004
M
Acc — ► core 1
11
SHR
0100
100004
o~3 k M .
2 Acc * Acc
12
SUB
0400
000000
Acc  Xregister — ► Acc,
Xregister M.
13
COJ
0004
010004
If 2 is 1, jump to indicated
instruction
14
RIN
0002
400104
M
Core 1 — » Acc
15
RUT
0001
000034
M
Acc «10°, Read Answer
16
RIN
0006
210104
M
Core 2 ■ Acc
17
TRA
0020
000004
a M
Acc Xregister
18
RIN
0002
400104
Core 1 «Acc
19
SHR
0100
200004
2" 2 Acc «■ Acc
20
SUB
0400
000000
Acc  Xregister ► Acc,
Xregister J*,
21
COJ
0004
004004
22
STO
0200
040004
A M A
Acc  core 4
23
RIN
0002
400104
Core 1 Acc
24
SHR
0100
200004
2" 2 Acc ► Acc
25
RIN
0002
040104
Core 4 ■ Acc
26
onij
200004
„9 . M .
6~ j^ui: *• ACC
27
STO
0200
400004
Acc —  core 1
28
RIN
0002
0201Q4
Core 5 — ► Acc
29
SHL
0040
200004
n 2 . M .
2 Acc ► Acc
30
STO
0200
100004
1
A M „
Acc — ► core 3
Programming Our Computer
TABLE 78. DIVIDE PROGRAM (Cont.)
153
MNEMONIC
INSTRUCTION
WORD
STEP
ORDER
ADDRESS
REMARKS
31
RIN
0006
204104
„ M ,
Core 2 ► Ace
32
TRA
0020
000004
Ace » X register
33
RIN
0002
400104
Core 1 — ► Ace
34
SHR
0100
400004
1 M
2" 1 Ace » Ace
35
SUB
0400
000000
M
Ace  Xregister — ► Ace,
Xregister HL
36
COJ
0004
002004
37
STO
0200
040004
M
Ace ► core 4
38
RIN
0002
400104
, M .
Core 1 ► Ace
39
SHR
0100
400004
2" 1 Ace 5i. Ace
40
RIN
0002
040104
Core 4 — ► Ace
41
SHL
0040
400004
2 1 Ace — Ace
42
STO
0200
400004
Ace —  core 1
43
RIN
0002
020104
Core 5 — ► Ace
44
SHL
0040
400004
2 Ace — Ace
45
TRA
0020
000004
M
Ace ■ Xregister
46
RIN
0002
100104
M
Core 3 Ace
47
ADD
1000
000000
M
Ace + Xregister Ace,
Xregister M.
48
STO
0200
100004
M
Ace — ► core 3
49
RIN
0006
202104
M
Core 2 ► Ace
50
TRA
0020
000004
Ace ► Xregister
51
RIN
0002
400104
Core 1 — ► Ace
52
SUB
0400
000000
Ace  Xregister
53
COJ
0004
010004
54
RIN
0002
020104
M
Core 5 ► Ace
55
TRA
0020
000004
M
Ace ► Xregister
56
RIN
0002
100104
M
Core 3 ► Ace
57
ADD
1000
000000
M
A + Xregister ► Ace,
Xregister _M»
58
STO
0200
100004
Ace ► core 3
59
RIN
0006
110104
M
Core 3 — ► Ace
60
RUT
0001
000034
M
Ace — ► 10°, Read Answer
154
How to Build a Working Digital Computer
TABLE 79. DIVIDE PROGRAM CHECKOUT
DIVIDE PROGRAM CHECKOUT
PROCEDURE DIVIDE 12 BY 3
B = 12 = 1100
A= 3 = 0011
CONTENTS AFTER COMPLETION
iz
C
FUNCTION 5
OF FUNCTION
Ace
Ext
XReg
Corel
2
3
4
5
START
0000
0000
0000
0000
0000
0000
0000
0001
6
RIN A C
0011
1
i
7
STO 2
'
001 1
8
TRA
\
r
00
11
9
RIN B
1100
1
10
STO 1
\
'
r
1100
i^i
SHR Q
nnm
1000
\
12
SUB
t 1110
0000
13
COJ 16
RIN 1
14
15
RUT ANS ,
RIN 2 C
'
r
16
0011
\
f
17
TRA
0011
18
RIN 1
1100
'
'
1
1
19
SHR 2
0011
0010
1
'
20
SUB
0000
oc
00
21
COJ 31
'
'
22
STO 4
1
0000
23
RIN 1
1100
1
'
24
SHR 2
0011
0000
25
RIN 4
0000
0000
26
SHL 2
0000
0000
'
27
STO 1
J
0000
28
RIN 5
0001
1
29
SHL 2
0100
0000
\
'
30
STO 3 1
1
1
1
'
r
T
0100
'
1
'
31
RIN 2
D 0011
0000
0000
0000
0011
0100
0000
0001
32
TRA
0011
33
RIN 1
0000
'
34
SHR 1
r oc
00
00
00
1
'
Programming Our Computer
TABLE 79. DIVIDE PROGRAM CHECKOUT (Cont.)
155
FUNCTION
£
CONTENTS AFTER COMPLETION
OF FUNCTION
CO
Ace
Ext
XReg
Corel
2
3
4
5
35
SUB
1
1101
0000
36
COJ 49
STO 4
37
38
RIN 1
39
SHR 1
40
RIN 4
41
SHL 1
42
STO 1
43
RIN 5
44
SHX 1
45
TRA
46
RIN 3
47
ADD
48
STO 3
RIN 2
'
»
'
'
49
0011
\
'
50
TRA
0011
51
RIN 1
\
r
0000
1
52
SUB
1
1101
0000
53
COJ 59
RIN 5
54
55
TRA
56
RIN 3
57
ADD
58
STO 3
RIN 3
'
'
59
0100
' 1
' 
1
'
60
RUT ANS
0100
1
'
ANSWER IS 0100 =' 4
I 11.
'
l
'
READOUT
Before devising a readout program to convert binary data to BCD
for use by the output unit, let's examine the basic problems encountered
when we attempt to convert a binary number into a binarycoded
decimal number. First, let's reexamine what a binarycoded decimal
number is.
The symbols through 9 represent all the decimal numbers. A
combination of any one or more of these ten symbols in positional
notation will represent a particular numerical value. This numerical
value also can be represented using the binary number system symbols
156
How to Build a Working Digital Computer
u ana i. nowever, lr we taice eacn individual decimal symooi ana
represent it with four binary symbols, we have converted each decimal
symbol to its binarycoded decimal (BCD) equivalent,
For example, the number 528 is represented by 0101 0010 1000 in
the BCD system. Note the four binary symbols on the left are equal
to 5 in the binary notation, the four middle binary symbols are equal
to 2, and the four binary symbols on the right are equal to 8. Some
representative examples of binary coded numbers, with their decimal
and binary equivalents, follow:
TAB! F 71
DECIMAL NUMBER
BCD NUMBER
BINARY NUMBER
6
0000 0000 0110
000000000110
29
0000 0010 1001
000000011101
57
0000 0101 0111
000000111001
84
0000 1000 0100
000001010100
114
0001 0001 0100
000001110010
143
0001 0100 0011
000010001111
175
0001 0111 0101
000010101111
199
0001 1001 1001
000011000111
212
0010 0001 0010
000011010100
246
0010 0100 0110
000011110110
287
0010 1000 0111
!
000100011111
Note the binary number in the righthand column of Table 710.
There is a significant difference in notation between BCD and pure
binary.
Before writing the program, let's examine the limitations of our
computer and set up some rules to make the development of the program
a little less difficult. The limitations of the computer are:
1. Input to the computer is limited to numbers less than or equal
to 9. Therefore, in a multiply program the highest number
would be 81; arrived at by multiplying 9x9.
2. Maximum number of bits in a word to be read out is 8.
(Note: 81 requires only 7 bits; therefore the eighth bit (MSB)
lO OlWQYrC*
\V3
n ~i
3 . Maximum number of instructions on the drum is 65 .
4. Maximum number of core locations is 5.
5. Instruction repertoire.
With paper and pencil we could proceed as follows:
1 . Put the binary number down in a single column.
2. Assign the proper decimal weight to each 1 .
Programming Our Computer
157
3. Add the total.
4. Put the total down across the page.
5. Place the binary equivalent below each of the decimal symbols.
6 9
0110 1001
1
64
1
4
1
1
69
The paper and pencil method does not seem to lend itself to pro
gramming simply because there is a requirement to convert the binary
number to the decimal number, and then convert each decimal number
to a BCD number. This is not logical since we wish to obtain the
decimal number in the first place. What is required is a direct conversion
from binary to BCD without obtaining the decimal number.
Consider the flow chart in Fig. 77. In this method we determine
whether the number is greater than a particular multiple of 10, and if
not, we continue to examine until we have established between what two
multiples of 10 our number lies.
The binary to BCD program is a looptype program that is repeated
until the answer is obtained. The program successively subtracts multi
ples of 10 from the number. The number is read into core memory
locations 4 and 5. The program is started by subtracting 80 from
N70=R
I
N60=R
10°
10'.
f(R)
f(N)
N50=R
T
N40'R
X
N30R
N20R
NIOR
fc=f
Fig. 77
158
How to Build a Working Digital Computer
th
£» mimrior ;
Lg uiv aigii ui tiic i Ciiiaiiliu; i . aiic remaining
three core memory locations must be loaded with the following data:
Core
1000
0101
0000
Core 1 is equivalent to 8 in binary notation. As the program continues,
the core data are reduced by 1 each time through the loop.
Core 2 contains the MSH of 80 and as the program continues core
2 is updated to contain the MSH of the number being subtracted.
Core 3 contains the LSH of 80 and is also updated to contain the LSH
of the number being subtracted. The flow chart for this program is
shown in Fig. 78.
UPDATE
CORES 1, 2, i i
(UPDATE ROUTINE)
R~2 3 = R '
(SUBTRACT ROUTINE)
^
DETERMINE
K) 1 &K)°
(READOUT ROUTINE)
Fig. 78
The first action would be to subtract 80 from the number in mem
ory. Since this number is in two core locations, it is not a straightforward
subtraction. We must subtract the LSH of 80 from the LSH of the
number, examine for a carry and then subtract the MSH of 80 from
the MSH of the number. With paper and pencil we accomplish this
as follows: let the number in memory be 0100/0101 with 0100 in
core 4 and 0101 in core 5. Since the binary equivalent of 80 is
0101 0000, then core 2 is 0101 and core 3 is 0000. Proceed as follows:
Subtract:
0101
 0000
0101
0100
 0101
1.1111
core 5
core 3
ans. in accumulator
COY'S 4
core 2
ans. is negative, indicating the number
is less than 80
Therefore write the program:
1 — Read in from core 3
Programming Our Computer 159
2 — Transfer to Xregister
3 — Read in from core 5
4 — Subtract
5 — Shift ans. right 4 times
6 — Transfer
7 — Read in from core 2
8— Add
9— Transfer
10 — Read in from core 4
11— Subtract
12— If MSB is a 1, jump to X
13 — Read in core 1
14 — Read out as 10 1
15— Shift left 4x
16— Read out as 10°
The first four steps set up for subtracting the LSH of 80 from
the LSH of the number. The fifth through ninth instructions take into
account any carry from the previous subtraction and set up for sub
traction the MSH of 80 from the MSH of the number. In the preceding
example there was no carry. However, in subsequent subtractions, a
carry will be indicated by a 1 in the 2 4 place of the accumulator display.
Therefore, by shifting the accumulator four times to the right, this
1 is moved to the LSB of the accumlator, giving 0001 in the accumula
tor. This 0001 is added to the MSH of the current multiple of 10,
which is then subtracted from the MSH of the number. When there is
no carry, the accumulator, after being shifted, would contain 0000.
The tenth and eleventh instructions subtract the MSH of the
number. If the answer is negative, then instruction 12 directs the pro
gram for the case when the number is less than 80. If the answer is
positive, then the number is greater than 80 and we can read out the
10 1 and 10° results via instructions 13, 14, 15, and 16.
If the number is less than 80, the contents of cores 2 and 3 must
be changed and the same subtraction process repeated. The binary
equivalent of 70 is 0100 0110 and to set these numbers into core
memory one need only subtract 10 from 80.
The readout routine is quite simple when we have core 1 data.
Core 1 is loaded initially with 1000 and continually updated to equal
the tens digit of the number we are subtracting from the number in
cores 4 and 5. Therefore if a number proves to be greater than the
number being subtracted, core 1 is read out as the 10 1 BCD number.
Obtaining 10° requires shifting the contents of the extension
register into the accumulator and reading this out as the 10° BCD
number.
The update routine advances the values of core 1, core 2, and core
3, so the program may have the loop format. See Table 711 for the
required data in cores 1, 2, and 3 for each loop of the program.
160
How to Build a Working Digital Computer
TABLE 711
LOOP
SUBTRACT
CORE 1
CORE 2
CORE 3
1
80
1000
0101
0000
2
70
0111
0100
0110
3
60
0110
0011
1100
4
50
0101
0011
0010
5
40
0100
0010
1000
6
30
OOii
0001
1110
7
20
0010
0001
0100
8
10
0001
0000
1010
9
0000
0000
0000
Tiie most simple to update is core 1, since this requires a subtrac
tion of 0001 each time through the loop. However, the lack of a 0001
any place in core memory complicates the routine. The only way to
get a 1 is to read in any number, shift left, and examine for a 1 in the
2* place. If a 1 is present, shift right 4 places. If not, repeat the left
shift and examination. Therefore, we program as follows:
1 — Read in core 1
2 — Shift left one place
3 — If MSB is a 1, jump to 5
4 — Jump to 2
5 — Shift right four places
6— Transfer to Xregister
7 — Read in core 1
8 — Subtract
9 — Store in core 1
The updating of core 2 and core 3 is a special program of multipli
cation. Core 1 is multiplied by ten (1010) as follows:
1 — Read in core 1
2 — Shift right two places
3 — Transfer to Xregister
4 — Read in core 1
5— Add
6 — Shift right one place
7 — Store accumulator in core 2
8 — Shift left four places
9 — Store accumulator in core 3
Core 1 is read in and shifted right. Therefore, the 2° and 2 1 bits
of the word are in the extension register and the 2 2 bit is in the LS
position of the accumulator. This is set into the Xregister and core 1
is reread into the accumulator. An addition is made and a single
shift right. After this the MSK of the product is in the accumulator
Programming Our Computer
TABLE 712. READOUT PROGRAM
161
STEP
MNEMONIC
INSTRUCTION
WORD
ORDER
ADDRESS
REMARKS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
RIN
RIN
RIN
RIN
RIN
RIN
STO
RIN
STO
RIN
TRA
RIN
SUB
SHR
TRA
RIN
ADD
TRA
RIN
SUB
COJ
22
RIN
23
RUT
24
SHL
25
RUT
26
RIN
27
SHL
28
COJ
29
JUP
30
SHR
0002
0002
0002
0002
0002
0002
0200
0002
0200
0002
0030
0002
0400
0100
0020
0002
1000
0020
0002
0400
0004
0002
0001
0040
0001
0006
0050
0004
0010
0104
410000
100000
020000
205000
040000
000404
040004
000204
020004
100104
002004
020104
000000
040004
000004
200104
000000
000004
040104
000000
010004
400104
000044
040004
000034
410104
401004
004004
001000
044004
Core 1
Core 3
Core 5
Core 2
Core 4
M
M
M
M
M
M
1000
0000
0000
•0101
0000
■ core 4, Ace— Ace
IBRA _^_Acc (MSH— Acc)
Acc^
IBRB M— Acc (LSHAcc)
M c A
Acc core 5, Ace— Ace
M
Core 3
M
Acc
Core 5
►Acc
• Xregister
M
• Acc
Acc  Xregister
Xregister M 
M
M
Acc,
2~* Acc
Acc
Core 2
. Acc
' Xregister
M
■ Acc
Acc + Xregister ►Acc,
X register —M—
M ^
Acc  Xregister
M
Core 4 ■ Acc
Acc  Xregister »Acc,
Xregister M .
If Acc 2 4 = 1, jump as
instructed
M
Core 1 
M
Acc
2 4 Acc 
M
Acc
► OBR10 1
Acc
 OBR10°
M
Acc
Core 1 — ^ Acc
2 1 Acc— Acc
If 2 4 = 1, jump out
Return to start of
sub loop
4 ... M
sub
loop
' Acc ■
• Acc
162
How to Build a Working Digital Computer
TABLE 712. READOUT PROGRAM (Cont.)
INSTRUCTION
MNEMONIC
WORD
STEP
ORDER
ADDRESS
REMARKS
31
TRA
0020
000004
A M „^
Ace ■ Xregister
32
RIN
0002
400104
Core 1 ► Ace
33
SUB
0400
000000
M
Ace  Xregister ► Ace,
Xregister »
34
STO
0200
400004
Ace ► core 1
35
SHR
0100
200004
2 2 Ace ^—Acc
36
TRA
0020
000004
Ace » Xregister
37
RIN
0002
400104
Core 1 ► Ace
38
ADD
1000
000000
Ace + Xregister ►Ace,
Xregister M .
39
SHR
0100
400000
2 " 1 Ace ■ Ace
40
STO
0200
200004
M
Ace ► core 2
41
SHL
0040
040004
2 4 Ace ► Ace
42
STO
0200
100004
Ace ► core 3
43
JUP
0010
002000
Return to start of loop
TABLE 713. READOUT PROGRAM CHECKOUT
CONTENTS AFTER COMPLETION
FUNCTION
s
55
OF FUNCTION
H
CO
Ace
Ext
XReg
Corel
2
3
4
5
10
RIN 3
0000
0000
0000
1000
0101
0000
0100
1101
11
TRA

0000
12
RIN 5
1101
13
SUB
1101
'
1
14
SHR 4
0000
1101
'
'
15
TRA
0000
16
RIN 2
0101
17
18
ADD
TRA
0101
1
01
01
19
RIN 4
0100
r
20
SUB
l
1111
0000
21
COJ 26

1
1
Programming Our Computer
TABLE 713. READOUT PROGRAM CHECKOUT (Cont.)
163
CONTENTS AFTER COMPLETION
i
FUNCTION 
5 OF FUNCTION
H
to
3
J Ace
Ext
XReg
Corel
2
3
4
5
22
RIN 1
23
RUT 10 1
24
SHL 4
25
RUT 10°
REST 1
' '
'
26
1000
'
27
SHL 1
1 0001
1010
28
COJ 30
JUP 27
SHR 4 C
29
'
1
'
30
) 0001
0001
'
'
31
TRA
0001
32
RIN 1
1000
\
33
SUB
0111
0000
'
r
34
STO 1
1
1
r
0111
35
SHR 2
0001
1100
1
I
36
TRA
\
0001
'
'
1
'
1
r
,r
37
REST 1
) 0111
1100
1
0001
0111
0101
0000
0100
1101
38
ADD
1000
1
0000
39
SHR 1
0100
0110
DO
40
STO 2
J
i
01
41
SHL 4
0110
0000
'
42
STO 3
0110
43
JUP 11
)
!
11
TRA
\
'
0110
1
12
RIN 5
1101
\
13
SUB
0111
'
1
0000
14
SHR 4
0000
01
11
J
15
TRA
0000
16
RIN 2
0100
17
ADD
0100
1
18
TRA
0100
19
RIN 4
0100
\
20
SUB
00
DO
00
30
164
How to Build a Working Digital Computer
TABLE 713. READOUT PROGRAM CHECKOUT (Cont.)
fc
FUNCTION
!z
CONTENTS AFTER COMPLE
OF FUNCTION
iION
H
O
en
Ace
Ext
XReg
Corel
2
3
4
5
21
COJ 26
0111
22
RIN 1
23
RTJTMSH10 1
0111
0000
24
SHL 4
0111
25
RUTLSH10
1
'
0111
V
v
"
f
f
T
1=3
CD
C3
! —
ac
i —
Q_
3
EC
=3
cir
lj
CXI
iO
C_3
_
(M
ro
*J
C
o
=>
%
I
o
o
Ul
1
•+
i
j_
3
4
5
6
71
8
9
j&
n
m
13
W
15
16
IT
™
18 1 i
19
1
i
1%I 1 ;
1 (_
i
!
5TtT
1 1 1 1
!
! !
I
!
!
W
23
24
25
f
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
tl
42
43
44
45
46
47
4i
48
50
Fig. 79
Programming Our Computer 165
and the LSH is in the extension register. The last three instructions
read this data into core 2 and core 3.
Now the program may be written in its entirety as shown in
Table 712.
Table 713 is a checkout chart for the readout routine. The number
77 is loaded into cores 4 and 5 in binary form (0100 and 1101).
Use this chart to check out your routine, since it gives step by step
results as you step through the program.
FORMULATING THE PROGRAM FOR TRANSFER TO DRUM
Select an 11 x 14 in. piece of graph paper with five squares per
inch and lay out as shown in Fig. 79. Using the octal address in the
listed program, score an x in the proper square.
When complete, cut each square and wrap the form around the
drum (see Chapter 5).
APPENDIX— BUILD YOUR OWN SWITCHES
The multipole switches required in the computer consists of singlethrow
and doublethrow.
The multipole, singlethrow switch, Fig. A, is used to open and close
a number of circuit lines simultaneously. The term singlethrow indicates
that only one terminal can be connected to each contact arm when the
switch is in the closed position. Each pole of the switch has an alphabetical
designation; i.e., A, B, C, etc. The terminal connected to the contact arm is
numerically designated as terminal 1. The other terminal is designated
as terminal 2.
■<rfo
ni oa o
N i>o>
S
WHERE N ■ THE NUMBER OF CIRCUIT
LINES AND POLES.
note: SWITCHES ARE SHOWN IN THE OPEN
POSITION
Fig. A.
Construction of the singlethrow, multipole switch requires the following
material:
Wood screws
SCREW
PAPERCLIP
LOOSE '
PAPERCLIP COILED TERMINAL I TERMINAL 2
CONTACTS WIRE
OPEN
POSITION
Fig. B.
167
168
How to Build a Working Digital Computer
CIRCUIT
i tut
I
Nl
^
*! °r
I o
B !
! !
2
1 jo
M*.
Ti «U
ARM
DOWEL
BASE
PAPER CLIP
N ■ THE NUMBER OF CIRCUIT LINES AND POLES
note: SWITCHES ARE SHOWN IN THE 2 POSITION
Fig. C.
P ZA V
TERMINAL 2 TERMINAL 3 TERMINAL I
Fig. D.
Vkin. round doweling
Paper clips
Assorted hardware
Insulated hookup wire.
Refer to Fig. B and build your switch. Note the following:
1. The arm dowel must rotate, therefore use small wood screws with a
smooth shaft below the head and make your holes in the posts slightly
larger than the wood screw diameter.
2. Make the armholes in the base equal in length to the distance between
the center of the arm dowel and the free end of the paper clip.
The multipole, doublethrow switch, Fig. C, is used to connect a single
terminal to either of two other terminals. The term doublethrow indicates
that either one of two terminals can be connected to each contact arm. Each
pole of the switch has an alphabetical designation; i.e., A, B, C, etc. The
terminal connected to the contact arm is numerically designated as terminal 1,
the other terminals are designated 2 and 3. To be consistent throughout
construction of your computer, always designate that terminal to the left
or top as terminal 2, and the terminal to the right or bottom as terminal 3.
If this is kept in mind, then wiring and interpretation of schematics will be
simplified. Also, when wiring doublethrow switches to select or 1 in the
computer units, designate terminal 2 as the position and terminal 3 as the
1 position.
Construction of the multipole, doublethrow switch is similar to the
singlethrow construction, except the switch now must be swung to either
side of the posts. Refer to Fig. D and build your switches.
ARITHMETIC UNIT WIRING LIST
Sl1
to Disp
Sl2
to S10J1
S2A1
to S12A1
2
to S12A2
3
to S2D3
Bl
to S12B2
2
toS12Bl
3
to S10L3
Cl
to S12C1
2
to S12F1
3
toB+
Dl
to S12C2
2
to S12D1
3
to S2A3 S2E3
El
to S12E1
2
to S12E2
3
toS2D3, S10I
Fl
NC
2
NC
3
NC
S3A1 toS13Al
2 toS13A2
3 toS3D3
Bl toS13B2
2 toS13Bl
3 toS3F3
Cl toS13Cl
2 toS13Fl
3 toB+
Dl toS13C2
2 toS13Dl
3 toS3A3S3E3
El toS13El
2 toS13E2
3 to S3D3 S10H3
Fl toS13Jl
2 toS13J2
3 toS3B3S3G3
Gl toS13H2
2 toS13Hl
3 toS10K3
Hl toS13I2
2 toS13G2
3 to B+
34A1
toS14Al
2
to S14A2
3
to S4D3
Bl
to S14B2
2
to S14B1
3
toS4F3
Cl
to S14C1
2
to S14F1
3
toB+
Dl
to S14C2
2
to S14D1
3
to S4A3 S4E3
El
to S14E1
2
to S14E2
3
to S4D3 S10B3
Fl
to S14J1
2
to S14J2
3
to S4B3 S4G3
Gl
to S14H2
2
to S14H1
3
toS4F3S10C3
Hl
to S14I2
2
to S14G2
3
toB+
S5A1
to S15A2
2
to S15A1
3
to S5B3
Bl
to S15B3
2
to S15C3
3
to S5A3 S5C3
Cl
to S15E2
2
to S15D2
3
to S5B3 S15D:
S61
toiy 1
2
to B+
S71
. toL2" 2
! toB+
S81 to L2
2 to B+
S91 to L2"
2 to B+
3
169
170
How to Build a Working Digital Computer
S10A1
to S15A2
2
3
to S15A3
toL2°
Bl
toDISP
2
to S11A3
3
to S4E3
Cl
NC
2
toSHB3
3
to S4G3
Dl
toDISP
2
toB+
3
to 315E3
XT 1
+« 01 A A 1
2
to S14B3
3
WL2 1
Fl
to S13A1
2
3
to S13B3
toL2 2
S10G1
to S12A1
2
3
to S12B3
toL23
S10H1
toDISP
2
to S11C3
3
to S3E3
11
toDISP
2
to S11D3
3
to S2E3
Jl
to Sl2
2
to S11E3
3
to L24
Kl
NC
2
to S11F3
3
to S3G3
Ll
NC
2
to S11G3
3
toS2B3
S11A1
toS15Bl
2
toS15Cl
3
to S10B2
Bl
to S15D2
2
toS15E2
3
to S10C2
Cl
to S14D3
2
to S14F3
3
to S10H2
Mf~ i.
4« en nr> o
2
to S13F3
3
to S10I2
El
to S12D3
2
to S12F3
3
to S10J2
Fl
to S14H3
2
to S14J3
3
to S10K2
S11G1
toS13H3
2
to S13J3
3
to S10L2
S12A1
to S2A1 S10G1
2
to S2A2
3
to S12B3
Bl
to S2B2
2
to S2B1
o
to S12A3 S10G2
r* t
2
toS2Dl
3
to S12D3
Dl
to S2D2
2
NC
3
toS12C3SHEl
El
toS2El
2
to S2E2
3
to S12F3
Fl
to S2C2
2
NC
3
toS12E3 SllE2
S13A1
toS3AlS10Fl
2
to S3A2
3
to S13B3
Bl
to S3B2
2
toS3Bl
3
toS13A3S10F2
Cl
toS3Cl
2
toS3Dl
3
to S13D3
Dl
to S3D2
2
NC
3
toS13C3SHDl
El
toS3El
2
to S3E2
3
toS13F3
Fl
toS3C2
2
NC
3
to S13E3 S11D2
Gl
NC
2
to S3H2
3
to S13H3
Kl
2
to S3G1
3
toS13G3, S11G1
11
NC
2
to S3H1
3
to S13J3
Jl
to S3F1
2
to S3F2
3
to S13I3 S11G2
Appendices
S14A1
to S4A1 S10E1
2
to S4A2
3
to S14B3
Bl
to S4B2
2
to S4B1
3
to S14A3 S10E2
Cl
to S4C1
2
to S4D1
3
to S14D3
Dl
to S4D2
2
NC
3
to S14C3 S11C1
El
toS4El
2
to S4E2
3
to S14F3
Fl
to S4C2
2
NC
3
to S14E3 S11C2
Gl
NC
2
to S4H2
3
to S14H3
Hl
to S4G2
2
to S4G1
3
to S14G3, S11F1
171
S14I1
NC
2 toS4Hl
3 toS14J3
to S4F1
to S4F2
Jl
2
3 to S14I3 S11F2
S15A1
to S5A2
2
toS5Al S10A1
3
to S10A2
Bl
to SUA 1
2
NC
3
to S5B1
Cl
to S11A2
2
NC
3
to S5B2
Dl
NC
2
toS5C2 S11B1
3
toS5C3S15E3
El
NC
2
to S5C1 S11B2
3
to S15D3 S10D3
Index
Abacus, 3
Accumulator, 65, 76
Add instruction, 106
Add/subtract circuit, 76
Addition, binary, 67
Addition equations, 77
Address, 88
AND, 41
AND circuit, 45
AND rule, 42
Arabic number system, 2
Arithmetic, binary, 65
Arithmetic, computer, 65
Arithmetic unit, 8, 75, 105
chassis construction, 82
checkout procedure, 85
construction details, 81
display circuit construction
equations, 84
first stage, 78
second through fourth stages, 79
wiring, 84
Associative law, 52
Automatic SequenceControlled
Computer, 5
Auxiliary internal memory, 87
Babbage, Charles, 4
Base, 15
Battery holder construction details, 62
Binary:
addition, 67
arithmetic, 65
division, 75, 146
multiplication, 75, 134
number system, 15
subtraction, 71
Binarycoded decimal numbers, 21
BinarytoBCD conversion, 155
paper and pencil method, 157
routine flow chart, 157
Binarytodecimal conversion, 21
Binarytooctal conversion, 129
Bit, 16
Boole, George, 51
Boolean algebra, 51, 52
Cell, 91
Checkout procedures:
arithmetic unit, 85
core memory, 97
decoder, 40
encoder, 31
system, 111
Coding sheet, program, 129
Common tie point terminal strips,
construction details, 124
Commutative law, 52
Complementary numbers, 74
Compound statement, 41
Computer:
arithmetic, 65
control, 105
program, sample, 8
units, 105
words, 88
Conditional jump (COJ) instruction,
108
Construction details:
arithmetic unit, 81
battery holder, 62
common tie point terminal strips,
124
control panel, 1 14
core memory, 93
decoder, 31
drum memory, 97
encoder, 23
junction box, 122
switches, 166
truth evaluator, 59
UN problem, 63
Control panel:
chassis construction, 115
construction details, 114
circuit construction, 189
harness installation, 120
terminal board construction, 120
Control unit, see also Control Panel,
7, 105, 106
Conversion, 16
binary to BCD, 155
binary to decimal, 21
173
174
How to Build a Working Digital Computer
binary to octal, 129
decimal to binary, 17
Core memory, 89
chassis construction, 94
checkout procedure, 97
construction details, 93
operation, 97
Core planes, 90
Data word, 88
Decimal number system, 3, 13
Decimal to binary conversion, 17
Decoder, 13, 22
checkout procedure, 40
construction details, 31
display chassis construction, 36
panel wiring, 34
switch chassis construction, 32
wire harness and display circuit
construction, 37
Decoding, 21
De Morgan's theorem, 55
Display accumulator contents (DIS)
instruction, 106
Display answer (ANS) instruction,
107
Distributive law, 52
Division:
binary, 75, 146
paper and pencil method, 145
program, 145
program flow chart, 146
routine, 145
Drum memory, 91
base and lamp display construction,
103
bits per track inch, 92
construction details, 97
drum construction, 99
drum contacts construction, 100
final construction operations, 104
rotational speed, 92
size, 92
storage capacity, 92
subbase and side support
construction, 98
Egyptian number system, 2
Electronic Numerical Tnteerator and
Calculator (ENIAC), 5
Encoder: 13, 18
chassis construction, 23
chassis supports construction, 25
checkout procedure, 31
construction details, 23
display lamp construction, 26
knobs and labels, 30
rotary switdi construction, ^*t
switch connections, 29
tape preparation, 27
Encoding, 7, 16
ENIAC, 5
Equations:
addition, 77
Arithmetic unit, 78, 79
subtraction, 77
Examination routine, 146
Executive routine, 126
Extension register, 76
External memory, 87
Flow chart, 126
symbols, 128
Flux, magnetic, 89
Harvard Mark I, 5
Hieroglyphics, 2
Hindu number system, 2
History of numbers, 2
Hollerith, Herman, 5
Input unit, see also Encoder, 7, 105
Instruction repertoire, 8, 106, 108, 129
Instruction word, 88
Internal memory, 87
Jump (JUP) instruction, 108
Junction box construction details, 1 22
Leibnitz, Gottfried von, 4
Logic, 41
circuits, 45
symbols, 42
Magnetic head, 91
Memory:
concepts, 88
core, 89
drum, 91
units, 87
Minimization, 43, 53
Multiplication:
binary, 75, 134
paper and pencil method, 133
program, 133
routine, 141
routine checkout, 141
NAND, 56
Neumann, Dr. John von, 6
NOR, 56
NOT, 42
Index
175
Number systems:
Arabic, 2
binary, 2
decimal, 3, 13
Egyptian, 2
Hindu, 2
octal, 14
Roman, 2
Octal:
codes, 129
numbers, 14, 129
Operating procedures, system, 113
OR, 41
circuit, 49
rule, 42
Order, 88
Organization, 6
Output unit, 8, 106
Pascal, Blaise, 4
Permanent data storage, 8
Positional notation, 13
Program:
coding sheet, 129
conventions (symbols), 128
form, 165
simple experiment, 132
storage, 8
Programming, 126
division, 145
multiplication, 133
process, 126
Punch card, 5
Q" = 1 routine, 147
R" subroutine, 136
jR» = subroutine, 136
R" — 1 subroutine, 137
Radix, 15
Read head, 91
Read in (RIN) instruction, 106
Readout:
accumulator to output (RUT)
instruction, 107
program, 165
program check, 165
routine, 165
Registers, 65, 87
Roman number system, 2
Rotary switch, 19
Rules of binary arithmetic, 65
Sand calculator, 3
Scratchpad storage, 8
Shift left (SHL) instruction, 106
Shift right (SHR) instruction, 106
Sign digit, 75
Simple program (experiment), 132
Stage, 69
Statement, 4
Stepped reckoner, 4
Storage:
capacity, 87
devices, 87
unit, 7, 105
Store (STO) instruction, 107
Storedprogram machine, 6
Subtraction:
binary, 71
equations, 77
(SUB) instruction, 106
Switch construction, 166
Symbolic logic, 41
Symbols:
flow chart, 128
logic, 42
Transfer accumulator contents to
Xregister (TRA) instruction,
107
Truth evaluator, 47
construction details, 59
Truth table, 43
experiments, 48
UN problem (experiment), 57
construction details, 63
Wilks, M. V., 6
Wiring, system, 109
Word:
computer, 88
length, 88
Xregister, 76